Как правильно перевести время на сайте?
В связи с переводом времени в России возникла необходимость перевести и время на сайте. На сервере время переведено, стандартная функция php выводит время правильно, а вот на самом сайте, к примеру, в дате публикации топика время устанавливается на час вперед. Кстати, на этом сайте ровно тоже самое. Как исправить не меняя часовой пояс в конфиге?
UP: К примеру если посмотреть тайтл даты публикации этого топика, то покажет: «29 октября 2014, 17:52», а публиковал я его в 16:52
UP: К примеру если посмотреть тайтл даты публикации этого топика, то покажет: «29 октября 2014, 17:52», а публиковал я его в 16:52
22 комментария
Судя по тому, что разработчики LiveStreet поленились использовать базу tzdata, нужно писать хитрый скрипт, который переведёт часовые пояса в базе данных на час назад тем, кому надо переводить, и не переведёт (Самаре, например). Однако, учитывая способ хранения часового пояса и то, что наверняка не все пользователи указали в профиле город, боюсь, будут большие проблемы.
Впрочем, можно и отнять единичку у всех из user.user_settings_timezone в БД примерно таким запросом:
Однако это чревато всё теми же проблемами с теми, кому часовые пояса переводить так не надо.
А ещё нужно будет обновить этот список часовых поясов для отображения в настройках. Разработчики очень безответственно себя повели, не позаботившись об этом заранее. Впрочем, неудивительно: если они закрывают глаза даже на то, что абсолютно каждый сайт на livestreet сейчас решето, то реакции на смену часовых поясов от них тем более не дождёшься.
По поводу времени, у меня на сервере оно тоже неправильно отображалось, помогли вот такие команды:
(P.S. про решето не напишу, ибо не довреяю)
И пока ls не станет использовать tzdata, данная проблема будет возникать каждый раз при смене часовых поясов.(А ещё он глючит при переходе с летнего времени на зимнее, но это совсем другая история.)
А как переписать-то? Что-то ни один из обсуждаемых вариантов не срабатывает.
В action такой код:
Разве надо тут что-то переписывать? На мой взгляд всё верно, массив сопоставляется с тестовыми переменными. Видимо правильно сделать так: Переписать текстовые переменные, грубо говоря в Минск и Калининград добавить Москву. И для всех у кого была 4-я временная зона в базе установить третью? А Самару потом вручную подправить?
ищем строку
и меняем москву на нужный вам город из php.net/manual/en/timezones.europe.php
Второй вариант это перевод времени на самом сервере.
Ну и третий это какой-то апгрейд от разработчиков, чего пока нет.
Так что на безрыбье, два варианта это очень не плохо.
1. Отредактировать текстовые переменные time_zone: Москву, СПб перенести в зону 3.
2. В базе всех юзеров с зоной 4 проапдейтить до зоны 3.
3. Пользователям из Ижевска и Саратова предложить вручную поменять временную зону.
Ориентирована, правда, на Python, но сама суть проблемы от языка не зависит