Я реализовал приложение на стороне сервера, которое записывает метки времени, когда записи создаются и обновляются. Приложение предполагает, что на часах сервера не включено летнее время, (а) потому что я прочитал, что это лучшая практика, и (б) потому что я думаю, что было бы сложно (если не невозможно) справиться с возникающими неоднозначностями, например когда часы возвращаются на час в октябре.
В целях безопасности, если приложение обнаруживает, что DST включен при запуске, регистрируется ошибка, и приложение завершается. Внутренние заинтересованные стороны просят меня заставить приложение работать, даже если на часах сервера приложений включен DST.
Я чувствую, что это глупая попытка, но мне нужно убедить руководство. Просто ли это делает реализацию более сложной или это в корне ошибочно так, что такое приложение (которое записывает метки времени) не может работать на 100% правильно в любое время года? Каков наилучший аргумент для того, чтобы не запускать такое приложение с включенным DST?
Лучшее, что я придумал, это:
При включении перехода на летнее время два раза в год. Рассмотрим следующий сценарий, когда в Великобритании работает сервер с часовым поясом, установленным на местное время с включенным летним временем:
В 2 часа ночи 25 октября 2009 года часы возвращаются на 1 час назад.
Запись создается в 1:30
Приложение (которое должно хранить временные метки в формате UTC) не может определить, наступило ли это в 1:30 утра до или после того, как часы вернулись, и поэтому не может определить, следует ли включать дополнительный час в настройку для UTC.
Это правда? Действительно ли возможно определить (в веб-приложении Java), происходит ли событие, которое происходит в 13:30 25 октября, до или после настройки часов?
Есть ли более веские причины избегать ТЛЧ?
Обновление
Просто чтобы прояснить, учитывая, что приложение должно хранить раз как UTC. Вопрос в том, почему при попытке сделать это было бы плохой идеей включить DST на сервере.