Изменило ли правило перехода на летнее время библиотеку времени выполнения C? - PullRequest
3 голосов
/ 09 ноября 2008

Некоторое время назад я собрал библиотеку на основе time , которая могла бы использоваться для расчета относительного времени в течение года для кого-то. В то время я отметил, что для перехода на летнее время он сдвинулся на один час в обоих направлениях. Мне просто пришло в голову, что Конгресс изменил правила перехода на летнее время . Я не помню, чтобы видел какую-либо информацию об обновлениях, чтобы решить изменение в алгоритмах. У кого-нибудь есть информация по этой теме?

Ответы [ 5 ]

3 голосов
/ 09 ноября 2008

Большинство Unix-подобных систем используют базу данных Olson tz для получения информации о часовом поясе:

http://www.twinsun.com/tz/tz-link.htm

Изменения в правилах часовых поясов США были реализованы в версии 2005l базы данных tz.

1 голос
/ 09 ноября 2008

На какой платформе вы работаете?

Поскольку Конгресс не устанавливает правила для всего мира :), уже давно существует механизм для гибкого определения правил для Unix / Linux

См., Например, http://www.manpagez.com/man/8/zic/ для формата файлов. Ваша конкретная система может нуждаться в обновленном определении новых правил (если дистрибутив еще не рассматривал его)

Для Windows MS встраивает некоторые правила и выпускает обновления, когда что-то меняется.

Для MacOs я понятия не имею, но я думаю, что он наследует Unix-способ ведения дел.

Но во всех этих случаях никаких изменений в библиотеке C не требуется

1 голос
/ 09 ноября 2008

Для Visual Studio 2005 и более ранних версий Microsoft выпустила обновленные версии библиотек времени выполнения C. Больше информации можно найти здесь .

0 голосов
/ 09 ноября 2008

Поскольку внутренние часы должны быть установлены в UTC, переход на летнее время - это просто изменение часового пояса. Например, в моей стране 26 октября мой Mac переключился с CEST (центральноевропейское летнее время) на «нормальный» CET (центральноевропейское время). Изменился дисплей моих часов, но не время компьютера.

http://www.timeanddate.com/library/abbreviations/timezones/eu/cest.html

Действительно, это означает, что вам абсолютно необходимо хранить переменные даты и времени либо в формате UTC, либо в собственном формате, который учитывает часовой пояс. Вот почему просто запись даты и времени в виде строки «ГГГГММДДЧЧММСС» - это ошибка, ожидающая своего появления.

0 голосов
/ 09 ноября 2008

На более общем замечании среда выполнения C использует внутренние файлы данных для сопоставления внутреннего представления времени с языковым стандартом пользователя. Эти сопоставления регулярно обновляются соответствующими поставщиками в соответствии с действующим законодательством.

...