Почему программисты ненавидят работать с часовыми поясами
Вводная для тех, кто не знает что такое таймзона: помимо часовых поясов, существует такое понятие, как временная зона (timezone) - это такая запись в специальной базе данных, которая определяет некоторую территорию, ее часовой пояс и административное время. Скорее всего, вы сталкивались с таймзонами, если выбирали часовой пояс на смартфоне — там их сильно больше чем 24, и в названии у них обычно есть название города. Подробнее можно почитать тут:
https://ru.wikipedia.org/wiki/Tz_databaseВ Израиле есть три таймзоны: Asia/Tel_Aviv, Asia/Jerusalem, и Asia/Hebron.
Вчера, перед шаббатом, мне написал один из пользователей моего
@zmanim_bot, спросив, почему у него бот не перешел на зимнее время. Я долго пытался понять, в чем проблема — я как бы тоже в Израиле, и у меня бот работает нормально.
Загадка номер раз:
Asia/Hebron — странная зона. В некоторых базах ее нету, зато есть некая Asia/Gaza. Но прикол в том, что на момент проверки (в пятницу 30 октября) в обеих было +час по отношению к израильскому времени.
Загадка номер два:
С сегодняшнего числа время совпадает.
Понятия не имею, почему — это точно не странные условия моего компьютера, я проверил на нескольких сайтах, показывающих время для разных таймзон.
В общем, в своем приложении я это починил, но как это, блин, работает, я так и не понял.
В принципе, это еще одна история из десятков на тему того, почему программисты ненавидят работать с таймзонами.
P.S. для желающих поэксперементировать самостоятельно — возьмите координаты 31.69, 35.10