前段时间用到,写了段小测试代码,个人觉得足够清楚的表明了二者的区别了,还是不明白的话,就看看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时区的。
本文通过一个简单的C语言程序对比了gmtime()与localtime()函数的功能。gmtime()返回的是协调世界时(UTC),而localtime()则考虑了本地时区设置,给出本地时间。需要注意的是,在某些未正确配置时区的嵌入式设备上,两者可能返回相同的时间。
2213

被折叠的 条评论
为什么被折叠?



