为什么在转换为 tm 结构和返回时两个 time_t 值之间存在一小时的差异?
Why is there a one hour difference between two time_t values when converting to tm struct and back?
当我执行以下代码时:
#include <time.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
time_t rawtime = 0;
time_t secs;
struct tm* timeinfo = gmtime(&rawtime);
printf("rawtime : %s\n", asctime(timeinfo));
secs = mktime(timeinfo);
printf("converted time : %s\n", asctime(gmtime(&secs)));
return 0;
}
输出为:
rawtime : Thu Jan 1 00:00:00 1970
converted time : Wed Dec 31 23:00:00 1969
为什么相差一小时?
我是 运行 Ubuntu 14.10 64 位顺便说一句。
因为 mktime 将本地时间而不是系统时间 (gmtime) 转换为时间戳。
当我执行以下代码时:
#include <time.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
time_t rawtime = 0;
time_t secs;
struct tm* timeinfo = gmtime(&rawtime);
printf("rawtime : %s\n", asctime(timeinfo));
secs = mktime(timeinfo);
printf("converted time : %s\n", asctime(gmtime(&secs)));
return 0;
}
输出为:
rawtime : Thu Jan 1 00:00:00 1970
converted time : Wed Dec 31 23:00:00 1969
为什么相差一小时?
我是 运行 Ubuntu 14.10 64 位顺便说一句。
因为 mktime 将本地时间而不是系统时间 (gmtime) 转换为时间戳。