C++ 为什么在使用mktime转换为time时,我的time\u t off值是夏令时?

C++ 为什么在使用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

以下几点似乎有些奇怪。我在中央夏令时,这应该是抵消协调世界时-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 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