localtime () возвращается неоднозначно

Я написал приведенный ниже код и протестировал его на разных платформах. Я получил другие результаты на 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). Я не мог найти соответствующую документацию для этого эксцентричного поведения. Кто-нибудь поможет мне понять это?

3

Решение

В HP-UX ia64, когда я предоставляю заданный часовой пояс как, TZ = CET, он просто считает его идентичным UTC. Согласно документации HP-UX на ссылка на сайт акцент мой,
«TZ может быть установлен с использованием формата:
[:] STDoffset [DST [смещение] [, править]]»

Смещение здесь является обязательным и представляет «значение, которое должно быть добавлено к местному времени, чтобы прибыть в UTC».
Таким образом, без смещения HP-UX считает STD таким же, как UTC.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]