Друпал, часовой пояс и учет DST

Главные вкладки

Аватар пользователя Ильич Рамирес Санчес Ильич Рамирес Санчес 31 января 2008 в 20:38

Есть у меня задачка с модулями event.

И вот озаботился вопросом правильности времени вводимого пользователем. Ведь мы в двух зонах живем: +3 и +4.

Начал копать в друпале на тему dst. Нет нифига. Просто нифига.
В date_format используется тупо _смещение_ без учета энергосбережения для временной зоны.

ВСЕ. больше упоминаний нема.

Походу надописать свой обработчик для перехода с +3 на +4 в час X? Как вы решаете эту проблему?

Ведь в евентах после такого перехода встрянет неверное время события. Что меня ооооочень не радует.

вру, в эвентах можно сохранять таймзону и выводить в ней.
а вот посты блога... сообщения форума. все остальное - там будет весело Smile

Комментарии

Аватар пользователя axel axel 31 января 2008 в 21:39

На сервере (во всяком случае на юниксовом сервере) время должно храниться в GMT, а пользователи и программы выставляют нужное им смещение в зависимости от временной зоны. Т.е. логично, что время в базе хранится всегда в GMT, а в зависимости от текущего сезона зима/лето и пользователя выводится с нужным смещением. По-моему в друпале смещение к дате именно это и делает.

Аватар пользователя Ильич Рамирес Санчес Ильич Рамирес Санчес 31 января 2008 в 23:41

то то и оно что там нет сезонного смещения. то есть если DST у юзера не совпадет с DST на сервере - юзерю будет плёхо.

вывод: вывод времени в том виде что есть - залипуха.
абыдно

Аватар пользователя andypost@drupal.org andypost@drupal.org 1 февраля 2008 в 0:31

Юзеру будет в большинстве случаев просто пофиг, а вот то, что пользователю, если он захочет получать даты в соответствии с летним/зимнем временем, нужно менять в своих настройках зону в зависимости от летнего и зимнего времени - это вот "плёхо".

Аватар пользователя seaji seaji 1 февраля 2008 в 23:54

Да, меня это то же бесит.
При переходе на летнее/зимнее время идешь на все свои сайты и переводишь время в ручную.
Неужели нет возможности автоматизации.

Аватар пользователя Ильич Рамирес Санчес Ильич Рамирес Санчес 2 февраля 2008 в 0:21

ну друпаловская format_date() зависит от .... переменной окружения TZ - если всмотритесь в код поймете.

я у себя решу.... просто поставив в settings.php строчку putenv('TZ=Europe/Moscow');

Решение временное + для наших и части СНГ - то есть зима/лето у нас синхронно туда сюда ходят.
Потому даты встанут правильно...ну за исключением пары часов в году... но это мелочи Smile

А вообще да - будем на время 5ой и 6ой версии workaround валять.
На 7ке DST будет - но они его возьмут из 5го пыха Smile

Мы такие проблемы решали на PHP 4.2 еще.
потому не ясно почему не выделено это в 2 модуля которые можно выбирать на свой вкус...

Аватар пользователя afishi afishi 24 декабря 2008 в 2:53

Ну есть модуль DST - который просто дает возможность выстроить время на нужное Вам место.

А теперь посмотрите на карту РФ. И подумайте, сколько часовых полос в нашей стране?
Как сделать настройку для каждого региона свой?
Информация, основа единая, но вот для каждого города своя, как разделить между города все это?
Вопрос все еще не закрыт!

Аватар пользователя andypost@drupal.org andypost@drupal.org 24 декабря 2008 в 9:34

И закрыт никогда не будет, так как все часовые пояса нужно переводить и поддерживать постоянные изменения.

Задача пока частично решена ( issue 11077 ) в 7ку включены изменения, дальше видно будет Smile