localdate()返回含糊不清

时间:2014-03-15 17:57:09

标签: c++ c hp-ux

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

SunOS的

$ ./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

AIX

$ ./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)的情况下输出是不同的。我找不到任何有关这种古怪行为的相关文档。有人会帮我理解这个吗?

1 个答案:

答案 0 :(得分:1)

在HP-UX ia64上,当我将set timezone设置为TZ = CET时,它只是将其视为与UTC相同。根据{{​​3}}强调我的HP-UX文档, “TZ可以使用以下格式设置: [:] STDoffset [DST [偏移] [,规则]]“ 此处的偏移是强制性的,表示“必须添加到当地时间以达到协调世界时(UTC)的值。”
因此,在没有偏移的情况下,HP-UX认为STD与UTC相同。