[#] «Never say never» или Работаем с таймзонами правильно
habrabot(difrex,1) — All
2014-11-11 00:30:04


Эта статья рассказывает о проблемах, которые поджидают программиста, работающего с часовыми поясами. В теории, вроде, всё хорошо, просто и понятно, но жизнь — штука сложная, и на практике, порой, возникают совершенно неожиданные ситуации. **TL;DR: Работа с таймзонами — это боль и унижение. Никогда не работайте с таймзонами!** Итак, [все][1] [кругом][2] [твердят][3] вам, что при получении времени от пользователя нужно сразу же переводить его в UTC, работать со временем нужно только в UTC и хранить время тоже нужно строго в UTC. Совет, на первый взгляд, выглядит разумным, и следование ему делает вашу жизнь проще… Если только ваша программа не предполагает сложной работы с датами. Записать в базу данных дату и время регистрации пользователя на сайте? Сохранить время отправки сообщения или дату создания заказа в интернет-магазине? Вывести сообщение в лог с указанием даты-времени? Используйте UTC и всё будет в порядке, можете даже не читать эту статью дальше. Любое текущее время можно совершенно спокойно конвертировать в UTC и забыть о проблемах. Но что, если мы хотим работать с временем в будущем? Или в прошлом? Например, если мы пишем сервис календаря, или сервис для отложенной отправки сообщений? [Читать дальше →][4]

[1]: http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/
[2]: http://habrahabr.ru/company/mailru/blog/242615/
[3]: http://asvetlov.blogspot.ru/2011/02/date-and-time.html
[4]: http://habrahabr.ru/post/242645/#habracut