Я не уверен, что я могу добавить к ответам выше, но вот несколько моментов от меня:
Существует четыре разных раза, рассмотрите:
Существует также историческое / альтернативное время , Это раздражает, потому что они не могут вернуться к стандартному времени. Например: юлианские даты, даты по лунному календарю на Сатурне, календарь Клингонов.
Хранение старта / конца временных меток в UTC работает хорошо. Для 1 вам потребуется имя часового пояса + смещение, сохраненное вместе с событием. Для 2 вам нужен локальный идентификатор времени, хранящийся в каждом регионе, и локальное имя часового пояса + смещение, хранящееся для каждого зрителя (это можно получить из IP-адреса, если вы находитесь в хрусте). Для 3, сохранить в UTC секунд и нет необходимости в часовых поясах. 4 является частным случаем 1 или 2 в зависимости от того, является ли это глобальным или локальным событием, но вам также необходимо сохранить , созданную на отметке времени , чтобы вы могли определить, изменилось ли определение часового пояса до или после этого событие было создано. Это необходимо, если вам нужно показать исторические данные.
Примером приведенного выше может быть:
Игра в финале Кубка мира по футболу произошла на Юге Африка (UTC + 2 - SAST) 11 июля 2010 года в 19:00 UTC.
blockquote>С помощью этой информации мы можем исторически определить точное время, когда финал WCS 2010 года состоялся даже если южноафриканское определение часового пояса изменится и сможет отображать это для зрителей в их локальном часовом поясе в момент запроса базы данных.
Системное время
Вам также необходимо сохранить файлы вашей ОС, базы данных и приложений tzdata в синхронизации, как друг с другом, так и с остальным миром, и широко тестировать при обновлении. Не удивительно, что стороннее приложение, от которого вы зависите, неправильно обрабатывало изменения TZ.
Убедитесь, что аппаратные часы настроены на UTC, и если вы используете серверы по всему миру, убедитесь, что их ОС также настроены на использование UTC. Это становится очевидным, когда вам нужно копировать почасовые файлы файлов apache с серверов в несколько часовых поясов. Сортировка их по имени файла работает только в том случае, если все файлы названы с тем же часовым поясом. Это также означает, что вам не нужно делать математику с датой в голове, когда вы используете ssh из одного окна в другой, и вам нужно сравнить временные метки.
Кроме того, запустите ntpd во всех ячейках.
Клиенты
Никогда не доверяйте метке времени, которую вы получаете с клиентской машины, как действительный. Например, заголовки Date: HTTP или javascript
Date.getTime()
. Они хороши при использовании в качестве непрозрачных идентификаторов или при выполнении математики даты в течение одного сеанса на одном и том же клиенте, но не пытайтесь перекрестно ссылаться на эти значения на то, что у вас есть на сервере. Ваши клиенты не запускают NTP и могут не иметь рабочий аккумулятор для своих часов BIOS.Trivia
Наконец, правительства иногда будут делать очень странные вещи:
Стандартное время в Нидерландах было ровно 19 минут и 32,13 секунды до UTC по закону с 1909-05-01 по 1937-06-30. Этот часовой пояс не может быть представлен точно с использованием формата HH: MM.
blockquote>Хорошо, я думаю, что все готово.