美文网首页
c语言时间汇总

c语言时间汇总

作者: YuWenHaiBo | 来源:发表于2017-06-05 14:44 被阅读116次
    • 时间戳

    时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数。它也被称为 Unix 时间戳(Unix Timestamp)。
    Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。
    Unix时间戳不仅被使用在Unix系统、类Unix系统中,也在许多其他操作系统中被广泛采用。

    • 获取当前时间戳 time()

    time() 是指返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数的函数。

    部分代码
    time_t tt;
    time(&tt);
    
    结果
    • 将时间戳转换为struct tm 结构体
      先看看你struct tm 的定义
    struct tm {
            int tm_sec;     /* seconds after the minute - [0,59] */
            int tm_min;     /* minutes after the hour - [0,59] */
            int tm_hour;    /* hours since midnight - [0,23] */
            int tm_mday;    /* day of the month - [1,31] */
            int tm_mon;     /* months since January - [0,11] */
            int tm_year;    /* years since 1900 */
            int tm_wday;    /* days since Sunday - [0,6] */
            int tm_yday;    /* days since January 1 - [0,365] */
            int tm_isdst;   /* daylight savings time flag */
            };
    
    我们可以调用localtime(),gmtime()这两个函数转换

    localtime是 把从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为本地时间,而gmtime函数转换后的时间没有经过时区变换,是UTC时间 。

    gmtime是把日期和时间转换为格林威治(GMT)时间的函数。将参数time 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。

    • 将struct tm 结构体转换为时间戳 mktime()

    mktime()这个函数主要是将struct tm 结构体转换为时间戳,但是需要注意的是,这个函数转换的是localtime得到的时间戳,如果是gmtime的时间戳,计算的时间会差所在地的时区。比如,按照北京时间来看的话,计算出来的是上午8点,实际是下午4点。差8个小时,因为北京是东8区。

    • 将时间戳转换为字符串ctime()

    表示的时间是基于格林威治标准时间(GMT)的。

    • 将struct tm 转换为字符串
      1) 调用函数asctime。
      2)调用函数sprintf()自由的拼接。
    sprintf_s(szDateTime, "%04d/%02d/%02d %02d:%02d:%02d",t->tm_year + 1900,t->tm_mon + 1,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec);
    

    相关文章

      网友评论

          本文标题:c语言时间汇总

          本文链接:https://www.haomeiwen.com/subject/ykvifxtx.html