博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux中gmtime和localtime的区别(time_t格式转换为tm格式)
阅读量:4165 次
发布时间:2019-05-26

本文共 1030 字,大约阅读时间需要 3 分钟。

Linux中gmtime和localtime的区别

time()函数,返回一个从1970年1月1日 00:00:00到现在的秒数

time_t time(time_t * t); 当参数为NULL时直接返回秒数,当然也会将该值写入t指针指向的地址
gmtime();将得到的秒数转换成一个UTC时间的结构体struct tm,该结构体包含什么请自行man
通过此函数gmtime()是0时区,把UTC时间转换成的话,需要在年数上加1900,月份上加1,小时数加上8
当然同类型的函数还有localtime();得到本地时间,该函数同gm唯一区别是,在转换小时数不需要加上8了。

localtime是将时区考虑在内了,转出的当前时区的时间。但是注意,有些嵌入式设备上被裁减过的系统,时区没有被设置好,导致二者转出来的时间都是0时区的。

 

Linux中gmtime和localtime的区别

前段时间用到,写了段小测试代码,个人觉得足够清楚的表明了二者的区别了,还是不明白的话,就看看APUE里面的章节吧。

#include <time.h>

#include <stdio.h>

int main(int argc, char **argv)

{
    time_t tmpcal_ptr = {0};
    struct tm *tmp_ptr = NULL;

    tmpcal_ptr = time(NULL);

    printf("tmpcal_ptr=%d\n", tmpcal_ptr);   

    tmp_ptr = gmtime(&tmpcal_ptr);

    printf("after gmtime, the time is:\n%d:%d:%d", tmp_ptr->tm_hour, tmp_ptr->tm_min, tmp_ptr->tm_sec);

    tmp_ptr = localtime(&tmpcal_ptr);

    printf("after localtime, the time is:\n%d:%d:%d", tmp_ptr->tm_hour, tmp_ptr->tm_min, tmp_ptr->tm_sec);

    return 0;

}

运行结果如下:

基本的意思是,gmtime转出来的是0时区的标准时间

localtime是将时区考虑在内了,转出的当前时区的时间。但是注意,有些嵌入式设备上被裁减过的系统,时区没有被设置好,导致二者转出来的时间都是0时区的。

转载地址:http://xkexi.baihongyu.com/

你可能感兴趣的文章
2018.5.58
查看>>
2018.12.5
查看>>
2018.12.6
查看>>
人智导(四):约束满足问题
查看>>
2018.12.7
查看>>
2018.12.8
查看>>
2018.12.9
查看>>
2018.12.29
查看>>
2018.12.31
查看>>
2019.1.2
查看>>
2019.1.4
查看>>
2019.1.9
查看>>
2019.1.12
查看>>
Java语言程序设计与数据结构》编程练习答案(第二十章)(二)
查看>>
2019.2.25
查看>>
2019.2.26
查看>>
2019.2.27
查看>>
2019.2.28
查看>>
2019.2.29
查看>>
2019.4.34
查看>>