Мне любопытно узнать, как работают другие администраторы с часовыми поясами в контексте удаленно управляемых серверов. За свою карьеру я встречал несколько условностей;
В некоторых местах я встречал несколько противоречивых соглашений. Я лично предпочитаю всегда использовать UTC - без перехода на летнее время. Но по тем или иным причинам кажется, что большинство людей предпочитают использовать какое-то понятие местного времени с переходом на летнее время. Хотя это кажется простым техническим вопросом, дискуссии об изменении условностей всегда имеют тенденцию к религиозным расколам.
Что ты используешь? В чем вы считаете преимущества и недостатки каждого подхода?
Некоторые причины, по которым UTC хорош:
Я предпочитаю вариант 4. Приложения, работающие на сервере, несут ответственность за решение, сохранять ли значения DateTime в формате UTC или нет.
Кроме того, когда сервер записывает журналы системных событий, приятно иметь возможность сопоставлять локальные события с записями журнала. Например, если центр обработки данных сообщает о сбоях в сети по местному времени, вы можете легко определить возникшие проблемы, не мысленно преобразовывая значения времени.
Нет, нет, тысячу раз нет.
Есть два типа программистов ... Те, кто понимает, что для отображения / форматирования следует использовать местное время. только, и те, которые рисуют себя в углу ... и они рисуют керосин.
Все события должны быть записаны в формате UTC, а результаты преобразованы в местное время только для отображения их пользователям. Прокляты те, кто этого не делает, и прокляты вдвойне те, кто использует местное время в формате, который отбрасывает информацию о часовом поясе (я смотрю на ты, Администраторы баз данных Oracle).
Думайте об этом как о проверке на заражение ... Если вы конвертируете спецификацию времени в локальное время, а затем делаете с ним что-нибудь, что не передает его в STDOUT, ваша программа должна не только завершиться с фатальной ошибкой, но и удалить исходный код, чтобы научить тебе урок.
Когда мне предоставляется выбор, я предпочитаю, чтобы часы BIOS были в формате UTC, а фактическое время сервера было местным. У нас нет присутствия в нескольких часовых поясах, поэтому единая временная метка журнала - не проблема, которая была бы, скажем, для 3M.
В моей компании до этого года у нас были все серверы в одной TZ. Теперь у нас есть серверы в 3 новых часовых поясах. Весь сервер работает с нашим местным часовым поясом. Это очень полезно для анализ журнала, тем более что мы распределяем веб-сайты, работающие в трех часовых поясах.
Однако в один особый случай, мы покинули сервер с нашим клиентом TZ. Предполагается, что приложение работает большую часть дня, а задачи обслуживания обычно настраиваются на выполнение в течение «ночи». Сначала мы установили сервер в нашем TZ, но задачи обслуживания слишком сильно замедляли работу для наших любимых клиентов типа «мы работаем, когда вы спите» ...
UTC - тоже очень хороший вариант. Если только люди не всегда ссылаются на местный часовой пояс при просмотре журналов (как здесь).
Я запускаю все свои серверы в формате UTC и конвертирую все, что попадет под мой контроль, как только могу.
Единственным исключением до сих пор был сервер звездочки, который мне пришлось оставить по местному времени. Изменение его на UTC полностью сломало звездочку. (Он на 1.6, надеюсь, это не будет проблемой, когда я обновлю его позже в этом году.)