我编写了以下代码,并在不同的平台上对其进行了测试。与其他平台相比,我在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/

10-09 13:15