Это может не быть таким ужасным, как вы боитесь.
Существует нечто, называемое База данных часовых поясов IANA .И, как выясняется, многие языки и библиотеки уже используют эту базу данных, чтобы рассказать им о таких вещах, как смещения UTC и правила часового пояса.
А сама база данных IANA не являетсястатичный.Обновляется на удивление часто.И когда это происходит, те платформы, языки и библиотеки, которые зависят от него, как правило, также обновляются до более новой версии.Таким образом, программное обеспечение более высокого уровня просто продолжает работать, поскольку происходят изменения часового пояса.
В 2018 году база данных *1013* часового пояса IANA была обновлена 9 раз.Это примерно каждые 6 недель в среднем.Таким образом, изменения в правилах перехода на летнее время не являются ни редкими (в глобальном масштабе), ни катастрофическими.
Хотя самое худшее, что может произойти (и происходит с беспокоящей частотой), это то, что какое-то правительство, умирающее от разума, дает меньшеуведомление за неделю об изменении правил летнего времени.Кроме того, для этой части мира существует путаница в отношении текущего времени, пока все системы не будут иметь достаточно времени для обновления.
В случае с ЕС, похоже, что все продумано и спланировано хорошо вавансовый.Таким образом, База данных часовых поясов IANA и все системы, которые зависят от нее, смогут обновляться в течение длительного времени.
Если вам известен код, который программирует свое собственное правило перехода на летнее времялогика, вместо того, чтобы полагаться на хорошо поддерживаемую, обновляемую базу данных постоянно меняющихся правил часового пояса, тогда разумным решением было бы перенести ваш код из этой пользовательской логики как можно скорее.
Что касается частиНа ваш вопрос о том, как хранить время для регулярно запланированных событий, лучше всего хранить отметку времени в точности так, как это намеревается сделать человек.Например, если вы ожидаете, что что-то произойдет в 9:00 по местному времени, то это должно быть запрограммировано на 9:00 по местному времени.Если вы ожидаете, что что-то произойдет в одно и то же время в глобальном масштабе, вероятно, его следует запрограммировать на UTC.
Дополнительные советы по передовым методам в этой области см. В этом SO ответе .
Обновление
Мэтт Джонсон напоминает нам о замечательной статье, которую он написал несколько лет назад, в которой содержатся полезные советы для правительств с мертвыми мозгами.Если они когда-либо научатся читать, это первое, что они должны прочитать: https://codeofmatt.com/on-the-timing-of-time-zone-changes/