linux时间函数(3)
timep = mktime(p); /*重新转换为time_t类型的UTC时间,这里有一个时区的转换*/
printf("time()->localtime()->mktime(): %d\n", timep);
return 0;
}
编译并运行:
$gcc -o gettime5 gettime5.c
$./gettime5
time():1200074913
time()->localtime()->mktime(): 1200074913
这里面把UTC时间按转换为本地时间,然后再把本地时间转换为UTC时间,它们转换的结果保持一致。
下载: gettime6.c
/*gettime6.c */
#include <time.h>
int main()
{
time_t timep;
struct tm *p;
time(&timep); /*得到time_t类型的UTC时间*/
printf("time():%d\n",timep);
p = gmtime(&timep); /*得到tm结构的UTC时间*/
timep = mktime(p); /*转换,这里会有时区的转换*/
printf("time()->gmtime()->mktime(): %d\n", timep);
return 0;
}
编译并运行:
$gcc -o gettime6 gettime6.c
$./gettime6
time():1200075192
time()->gmtime()->mktime(): 1200046392
从这里面我们可以看出,转换后时间不一致了,计算一下,整整差了8个小时( (1200075192-1200046392)/3600 = 8 ),说明mktime会把本地时间转换为UTC时间,这里面本来就是UTC时间,于是再弄个时区转换,结果差了8个小时,用的时候应该注意。
相关新闻>>
- 发表评论
-
- 最新评论 更多>>