Обработка високосных секунд с датой

Я использую Clockspeed-0.62 (программное обеспечение DJB) на Ubuntu 13.10. Я настроил часовые пояса так, чтобы /usr/share/zoneinfo это ссылка на /usr/share/right, и мой /etc/leapsecs.dat актуальна, т.е. содержит 25 високосных секунд.

Может ли кто-нибудь помочь мне понять (и решить), почему date -u команда показывает время на 25 секунд вперед export TZ=UTC; date?

Выход из date; (export TZ=UTC; date); date -u:

Mon Feb  3 22:33:56 CET 2014
Mon Feb  3 21:33:56 UTC 2014
Mon Feb  3 21:34:21 UTC 2014

1 ответ

Решение

TZ=UTC заставляет glibc использовать файл zoneinfo с именем "UTC", который в вашем случае /usr/share/zoneinfo/right/UTC содержащие корректировки високосных секунд.

-u опция фактически эквивалентна настройке TZ=UTC0, Поскольку нет файла зонной информации с именем UTC0 вместо этого настройка интерпретируется как имеющая формат "смещение стандартного отклонения" (как в tzset (3)). В этом формате первые три буквы просто используются в качестве видимого имени, а "0" используется как простое смещение от UTC (то есть смещение от системных часов).

Другие вопросы по тегам