Есть ли веская причина хранить время не в UTC? - PullRequest
19 голосов
/ 15 июля 2009

Мне интересно, есть ли какие-либо веские причины для того, чтобы когда-либо хранить информацию о времени в чём-либо кроме UTC (GMT)? Я считаю, что это твердое правило для всех разработчиков программного обеспечения. Преобразование в местное время - это просто перевод, который происходит на уровне пользовательского интерфейса для отображения. Я также видел случаи, когда перевод необходим для правильной реализации алгоритма (для обработки изменений даты в полночь и т. Д.).

Ответы [ 7 ]

25 голосов
/ 15 июля 2009

В общем, я считаю, что лучше использовать UTC. Иногда вам может понадобиться местное время. Тогда я бы предпочел использовать UTC + информацию о часовом поясе.

В общем случае для повторяющихся событий время может быть чрезвычайно сложным, и вы должны очень тщательно проанализировать варианты использования.

Представьте себе повторяющуюся встречу, каждый вторник в 9:00. Если DST изменится, встреча все равно должна состояться в (новое) 9:00 утра.

Но не добавить к встрече некоторых парней во Франции. Для них встреча в 6:00 вечера. И они меняют DST по другому правилу.

Когда вы меняете DST, они этого не делают, поэтому какое-то время (пока Франция не изменит DST) кто-то должен быть «выключен»: либо ваша встреча будет в 10:00, а их встреча в 6:00, либо ваша - в 9:00. и переместить их в 5 вечера. Другого пути нет, компьютеры не имеют к этому никакого отношения.

Как приложение решит, кого следует «исправить»? Это группа с большинством членов? (1 парень в США против 20 во Франции?) Или речь идет о важности человека? (что, если один парень в США является генеральным директором?)

Как вы храните эту информацию? Мое лучшее решение - использовать UTC + один «основной часовой пояс» Пользователи в «главном часовом поясе» побеждают (остаются неизменными).

Все может быть довольно сложно, но в целом я обнаружил, что UTC решает больше проблем, чем вводит.

12 голосов
/ 15 июля 2009

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

7 голосов
/ 15 июля 2009

Сигналы тревоги и запланированные задания иногда хранятся по местному времени, чтобы на них не влияли переход на летнее время или изменение часового пояса.

5 голосов
/ 29 мая 2010

UTC - это хронологический стандарт, который имеет точность и точность TAI , но с нерегулярными интервалами, добавленными через нерегулярные интервалы, что позволяет ему точно отслеживать среднее солнечное время UT1).

Если система, с которой вы работаете, не может обрабатывать дополнительные секунды, то Bureau International des Poids et Mesures рекомендует использовать TAI вместо UTC.

См .: http://tycho.usno.navy.mil/leapsec.html

2 голосов
/ 15 июля 2009

Во встроенной системе вы вполне можете получить время от источника в виде «тика за эпоху».

Если время обновляется относительно часто и отображается относительно редко, то вы также можете хранить его так же, как оно предоставляется вам, и конвертировать его для отображения только при необходимости.

В общем, UTC - это путь, если нет других соображений.

2 голосов
/ 15 июля 2009

Всегда ? Я уверен, что в отдельных случаях есть веские причины. В целом, однако, хранение UTC намного лучше, чем местное время, поэтому я бы рассматривал UTC как позицию по умолчанию, если не будет особого рассмотрения.

0 голосов
/ 15 июля 2009

Когда вы уверены, что будет использоваться только местное время.

...