Изменило ли правило перехода на летнее время библиотеку времени выполнения C?

StackOverflow https://stackoverflow.com/questions/275952

  •  07-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top