我编写了以下代码,并在不同的平台上对其进行了测试。与其他平台相比,我在HP-UX IA64上获得了不同的结果。
码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
time_t t;
struct tm *gmt, *lat, ldummy;
tzset();
printf("Local timezone: TZ=%s\n\n", getenv("TZ"));
t = 1394881705;
lat = localtime(&t);
printf("Local time is : %s", asctime(lat));
gmt = gmtime(&t);
printf("GMT is : %s", asctime(gmt));
return 0;
}
输出:-
的Linux
$ ./a.out
Local timezone: TZ=CET
Local time is : Sat Mar 15 12:08:25 2014
GMT is : Sat Mar 15 11:08:25 2014
太阳操作系统
$ ./a.out
Local timezone: TZ=CET
Local time is : Sat Mar 15 12:08:25 2014
GMT is : Sat Mar 15 11:08:25 2014
艾克斯
$ ./a.out
Local timezone: TZ=CET
Local time is : Sat Mar 15 12:08:25 2014
GMT is : Sat Mar 15 11:08:25 2014
(这是问题所在)
HP-UX IA64
$ ./a.out
Local timezone: TZ=CET
Local time is : Sat Mar 15 11:08:25 2014
GMT is : Sat Mar 15 11:08:25 2014
我试图了解为什么在HP-UZ IA64(版本为11.31)的情况下输出会有所不同。我找不到有关此异常行为的任何相关文档。有人可以帮助我了解这一点吗?
最佳答案
在HP-UX ia64上,当我提供设置的时区为TZ = CET时,它只是将其视为与UTC相同。根据link重点矿的HP-UX文档,
“TZ可以使用以下格式设置:
[:] STDoffset [DST [offset] [,rule]]“
这里的偏移量是强制性的,代表“必须将其添加到本地时间才能到达世界协调时间(UTC)”。
因此,在没有偏移的情况下,HP-UX认为STD与UTC相同。
关于c++ - 本地时间()返回不明确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22427600/