Дату и время можно назвать одним из самых коварных аспектов разработки. Кажущаяся простота задачи оборачивается багами, которые всплывают в момент смены летнего времени, при работе с пользователями из разных регионов или при миграции исторических данных. Рассмотрим стратегию, которая избавит от головной боли при работе с временными зонами.
Почему UTC — не панацея (но всё равно обязателен)
Вопреки распространённому убеждению, хранения всех дат в UTC недостаточно. Ваша стратегия должна включать два ключевых аспекта:
- Хранение в UTC всегда:
Серверы и базы данных должны оперировать исключительно UTC. Хранение времени с учётом временных зон (например, TIMESTAMP WITHOUT TIME ZONE
в PostgreSQL) — прямой путь к необратимой порче данных.