И что дальше? Всё равно отстаёт на час.
Так, разъясняю популярно, что такое часовые пояса и как они работают применительно к форуму.
Поясное время
Есть так называемое универсальное время (UTC), оно же время Гринвичского меридиана (GMT). Это точка отсчёта, от неё "пляшут" все часовые пояса. У каждого часового пояса есть своя поправка к универсальному времени, пишется со знаком + или -. Например UTC+3 (или GMT+3) означает, что местное время в данной точке можно получить прибавив 3 часа к универсальному времени, GMT-8 означает, что надо отнять 8 часов от универсального времени. Обозначения GMT и UTC обозначают соответственно время Гринвичского меридиана и универсальное время, но по сути это одно и то же. Бывает и например UTC+3:30 (т.е. нужно добавить 3,5 часа), но это уже экзотика.
Москва до отмены перехода на летнее/зимнее время жила в поясе UTC+3 зимой, и UTC+4 летом. Сейчас, после отмены перехода, Московское время ВСЕГДА UTC+4.
Интернет ресурсы и поясное время
Теперь применительно к форуму и вообще интернет-ресурсам. Собственно интернет-ресурс вообще не привязан к какому-то конкретному часовому поясу. Существует понятие времени по умолчанию, это время, используемое для отображения гостям (незарегистрированным на ресурсе посетителям), это время выставляется администратором ресурса. У нас оно выставлено в соответствии с московским временем и выставлено правильно. Каждый же пользователь (а он может жить где угодно на Земле, это не важно) может выставить себе время самостоятельно, исходя из точки своего обитания, и форум будет показывать пользователю ЕГО ПЕРСОНАЛЬНОЕ время, автоматически пересчитывая все даты и времена, используемые на форуме под ЕГО, конкретного пользователя часовой пояс.
Всё сломалось!
Теперь о том, почему после отмены перехода на зимнее время возникли проблемы и как это исправить.
Почему?
Если у пользователя в профиле включена опция определять летнее/зимнее время автоматически, форум честно произведёт для этого пользователя перевод часов в определённую дату. Т.е. всё правильно, что просили, то и получили.
Что делать?
Выставить себе в профиле правильный часовой пояс.
Я ничего не понимаю, объясните по шагам!
1. Авторизуемся на форуме.
2. Идём в свой кабинет, "Основные настройки".
3. Ищем там раздел "Опции даты и времени".
4. Делаем следующее по выбору (один из двух вариантов!):
4.а. Первый вариант. Выставляем в поле свой Часовой пояс (для Москвы GMT+4:00, не обращайте внимание на то, что текст будет НЕ про Москву, важен сам часовой пояс). В поле Опции перехода на летнее/зимнее время выставляем "Коррекция DST всегда отключена". Таким образом мы жёстко задаём свой часовой пояс и запрещаем как-либо этот часовой пояс менять автоматически.
4.б. Второй вариант. Если раньше (до отмены перехода) со временем всё было ок, оставляем поле Часовой пояс предыдущее значение (для Москвы GMT+3:00). В поле Опции перехода на летнее/зимнее время выставляем Коррекция DST всегда включена". Таким образом мы фактически неверно указываем свой часовой пояс, однако указываем всегда автоматически добавлять к нему 1 час, в итоге опять-таки получаем верное время.
5. Прокручиваем страничку вниз и жмём Сохранить.
Безобразие! Почему админ не сделает всё сам?
Ну во-первых, вмешиваться в настройки профиля пользователя - это нарушение его, пользователя, прав и свобод. Может кому-то нравится жить по времени штата Пенсильвания, его право!
Однако это - не главное, всё проще: если бы всё наши пользователи гарантированно жили в одном городе (читай - в одном часовом поясе), наверное действительно это было бы разумно - написать один прямой запрос в базу данных и оптом изменить всем настройки времени. Но часовые пояса-то не у всех одинаковые, воткнуть всем время Москвы или Перми - не самый правильный вариант, согласитесь.
P.S. Если у кого-то ещё остались вопросы - с удовольствием отвечу.
Последний раз редактировалось Владимир; 19.11.2011 в 13:32.
Владимир, спасибо за подробную инструкцию. Я пытался скрестить варианты 4а и 4б.