打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
时区函数有无时区转换总结
#include <stdio.h>
#include <time.h>
#include <sys/time.h>

/*
time_t time(time_t t)
返回UTC时间
*/

time_t GetTimerSecond(void)
{
struct timeval tv;
struct timezone tz;
gettimeofday( &tv, &tz);
return tv.tv_sec - tz.tz_minuteswest * 60; /// 本地时间:秒单位

    //return tv.tv_sec;                        /// UTC时间:秒单位
 
 
      ///   获得毫秒级,当前系统时间 
     return tv.tv_sec * 1000 - tz.tz_minuteswest * 60 * 1000 + tv.tv_usec / 1000;
}

///struct tm *localtime(const time_t *clock);
///localtime_r(&UTCTime, &tm_time); //这里有时区转换, 从UTC时间转为本地时间
/*
struct tm st 
{

st.tm_year = sysTime.year - 1900;
st.tm_mon = sysTime.month- 1;
st.tm_mday = sysTime.day;
st.tm_hour = sysTime.hour;
st.tm_min = sysTime.minute;
st.tm_sec = sysTime.second;
st.tm_isdst = 0;
}
*/


/// ***localtime和localtime_r有时区转换,UTC加时区
void LocalTime(time_t *T,struct tm *s_tm1)
{
    struct tm s_tm;
    tzset();
    ///s_tm = localtime(T); /// 将UTC时间,转换成本地时间
    localtime_r(T,&s_tm);   /// 功能与localtime一样,但是可重入,前者不可。
#if 1
    fprintf(stdout,"TTT-localtime-[%d]-[%d]-[%d]:[%d]:[%d]:[%d]\n",
        s_tm.tm_year+1900,
        s_tm.tm_mon+1,
        s_tm.tm_mday,
        s_tm.tm_hour,
        s_tm.tm_min,
        s_tm.tm_sec);

#endif
      s_tm1->tm_year = s_tm.tm_year;
      s_tm1->tm_mon  = s_tm.tm_mon;
      s_tm1->tm_mday = s_tm.tm_mday;
      s_tm1->tm_hour = s_tm.tm_hour;
      s_tm1->tm_min  = s_tm.tm_min;
      s_tm1->tm_sec  = s_tm.tm_sec;
      
      
}

/// mktime***有时区转换,本地时间减时区
///time_t mktime(struct tm * timeptr);
void mkTime(struct tm *s_tm)
{
    /// 将系统时间的结构体,转成UTC秒数
    printf("TTT--mktime[%ld]\n",(long int)mktime(s_tm));
}

/// gmtime***无时区转换

//2016-04-18测试无时区转换
///struct tm *gmtime(const time_t *time);
void gmTime(time_t *T)
{
    struct tm *s_tm;
    s_tm = gmtime(T);
    /// 将UTC时间的秒数,转换成照样是UTC时间的年月日结构体
    fprintf(stdout,"TTT-gmtime-[%d]-[%d]-[%d]:[%d]:[%d]:[%d]\n",
        s_tm->tm_year+1900,
        s_tm->tm_mon+1,
        s_tm->tm_mday,
        s_tm->tm_hour,
        s_tm->tm_min,
        s_tm->tm_sec);

    
}

/// ctime***有时区转换,UTC加时区
///char *ctime(const time_t *time);
void cTime(time_t *time)
{
    /// 将UTC时间的秒数,转换成本地时间的年月日字符串
    printf("TTT-ctime-[%s]\n",ctime(time));
}

/// asctime***无时区转换
///asctime
///把timeptr指向的tm结构体中储存的时间转换为字符串字符串格式返回
void ascTime(struct tm *s_tm)
{
    ///将本地时间的结构体,转换成本地时间的年月日字符串
    printf("TTT--asctime--[%s]\n",asctime(s_tm));
}

*trftime
函数功能:将时间格式化,或者说:格式化一个时间字符串。
头文件:time.h
函数原型:我们可以使用strftime()函数将时间格式化为我们想要的格式。它的原型如下:
*/
///size_tstrftime(char*strDest,size_tmaxsize,constchar*format,conststructtm*timeptr);
/*
echo(strftime("%b %d %Y %X", mktime(20,0,0,12,31,98)));
echo(gmstrftime("%b %d %Y %X", mktime(20,0,0,12,31,98)));
//输出当前日期、时间和时区
echo(gmstrftime("It is %a on %b %d, %Y, %X time zone: %Z",time()));
?>输出:
Dec 31 1998 20:00:00
Dec 31 1998 19:00:00
It is Wed on Jan 25, 2006, 11:32:10 time zone: W. Europe Standard Time

*/
void trfTime()
{

}

int main()
{
    time_t Time;
    struct tm s_tm;
    fprintf(stdout,"TTT--NOW time[%ld]--getTimeSecond[%ld]\n",(long int)time(NULL),(long int)GetTimerSecond());
    fprintf(stdout,"TTT--timeZone8[%ld]\n",(long int)GetTimerSecond() - (long int)time(NULL));

    Time = time(NULL);
    LocalTime(&Time,&s_tm);

    
    mkTime(&s_tm);

    Time = time(NULL);
    gmTime(&Time);

    cTime(&Time);

    ascTime(&s_tm);
    
    
    return 0;  
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
linux时间函数
c语言中时间的获取
Python常用时间函数
#include<time.h> 库函数详解
Linux 下的时间编程总结
mktime和localtime
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服