C++ 为什么在使用mktime转换为time时,我的time\u t off值是夏令时?
以下几点似乎有些奇怪。我在中央夏令时,这应该是抵消协调世界时-5。当我输出struct tm对象的字符串表示形式时,它看起来是正确的。但是,当我将struct tm转换为time_t并查看值时,我得到的差值为21600,即6小时(21600秒/60/60=6小时)。我估计要5个小时 我在Ubuntu 12.04上运行GCC4.8.2C++ 为什么在使用mktime转换为time时,我的time\u t off值是夏令时?,c++,time,C++,Time,以下几点似乎有些奇怪。我在中央夏令时,这应该是抵消协调世界时-5。当我输出struct tm对象的字符串表示形式时,它看起来是正确的。但是,当我将struct tm转换为time_t并查看值时,我得到的差值为21600,即6小时(21600秒/60/60=6小时)。我估计要5个小时 我在Ubuntu 12.04上运行GCC4.8.2 9 time_t t1 = time(nullptr); 10 time_t t2 = t1; 11 12 char b
9 time_t t1 = time(nullptr);
10 time_t t2 = t1;
11
12 char buf1[64];
13 char buf2[64];
14
15 tm utcTm, localTm;
16 tm* tmp;
17
18 tmp = gmtime(&t1);
19 utcTm = *tmp;
20
21 tmp = localtime(&t2);
22 localTm = *tmp;
23
24 strftime(buf1, 64, "%c %Z", &utcTm);
25 strftime(buf2, 64, "%c %Z", &localTm);
26
27 cout << "UTC: " << buf1 << endl;
28 cout << "local: " << buf2 << endl;
29
30 cout << "Is DST? " << utcTm.tm_isdst << " " << localTm.tm_isdst << endl;
31
32 time_t t3 = mktime(&utcTm);
33 time_t t4 = mktime(&localTm);
34
35 cout << "UTC: " << t3 << " Local: " << t4 << " Diff: " << (t3 - t4) << endl;
36 cout << "Orig UTC: " << t3 << " Orig Local: " << t4 << " Diff: " << (t3 - t4) << endl;
9 time\u t t1=时间(nullptr);
10时间t2=t1;
11
12个字符buf1[64];
13 char buf2[64];
14
15TM utcTm,localTm;
16 tm*tmp;
17
18 tmp=gmtime(&t1);
19 utcTm=*tmp;
20
21 tmp=本地时间(&t2);
22 localTm=*tmp;
23
24标准时间(buf1、64、%c%Z、&utcTm);
25个strftime(buf2、64、%c%Z、&localTm);
26
27无法检查环境变量TZ
:是否为CST/CDT设置了该变量?系统时间(date
command)是否正确显示?应进行设置。date命令给了我输出“Mon Jun 2 14:12:09 CDT 2014”。我认为问题在于此。另见。对于特定于linux的系统,您可能可以使用timelocal和timegm