Localtime()返回歧义

localtime() returning ambigious

本文关键字:歧义 返回 Localtime      更新时间:2023-10-16

我编写了下面的代码并在不同的平台上进行了测试。与其他平台相比,我在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=%snn", 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)的情况下输出不同。我找不到任何关于这种古怪行为的相关文件。有人能帮我理解一下吗?

在HP-UX ia64上,当我提供set timezone为,TZ=CET时,它只是认为它与UTC相同。根据HP-UX文档在链接强调我,"TZ可以使用以下格式设置:[:] STDoffset [DST(抵消)[,]]"这里的偏移量是强制性的,代表"必须添加到本地时间以到达协调世界时(UTC)的值。"
因此,在没有偏移的情况下,HP-UX认为STD与UTC相同。