Иногда возникает такая ситуация, что текущее время на сервере не соответствует вашему текущему часовому поясу или часовому поясу региона, на который ориентирован ваш сайт.
Чтобы было понятно, напомню: территориально Россия очень большая, и далеко не всем нужно, чтобы их сайты «жили» по московскому времени. Например, Урал, Сибирь, Дальний восток и т.д.
Серверы большинства популярных российских хостинг-провайдеров размещены на технологических площадках Москвы и Санкт-Петербурга и по-умолочанию настроены, естественно, на московскую временну́ю зону. Сервер не может автоматически подстраиваться под ваше текущее местоположение и переводить системные часы. В связи с чем, работа функций даты и времени на сайте может быть не совсем корректной. Естественно, сейчас речь не идёт о CMS, в которых поправка часового пояса обычно присутствует прямо в интерфейсе администратора.
В первую очередь проверьте текущее состояние с помощью PHP-кода:
echo ini_get('date.timezone');
Хорошо, если у вас свой сервер и имеется доступ к php.ini, где можно задать нужную временну́ю зону и забыть. Например, таким образом:
date.timezone = Europe/Moscow
Правда, если на сервере размещены несколько проектов, в которых должны поддерживаться различные часовые пояса, тогда лучше этого не делать. В этом случае будет правильнее задать временные зоны только для проектов, где один часовой пояс.
Установка временной зоны на виртуальном хостинге
На виртуальном хостинге, доступа к конфигам сервера чаще всего нет. Поэтому, в первую очередь попробуйте задать временну́ю зону с помощью .htaccess. Просто найдите или создайте в корне своего сайта файл .htaccess и добавьте в него такую строку:
php_value date.timezone "Europe/Moscow"
Если способ не сработает, тогда воспользуемся функцией date_default_timezone_set(), которая устанавливает временную зону по умолчанию для всех функций даты и времени. Для этого нужно где-нибудь в начале скрипта просто добавьте такую строку:
date_default_timezone_set('Europe/Moscow');
Естественно, Europe/Moscow меняется на необходимый вам часовой пояс. Для территории РФ в PHP поддерживаются следующие временные зоны:
- Europe/Moscow
- Europe/Samara
- Europe/Kaliningrad
- Europe/Volgograd
- Asia/Anadyr
- Asia/Kamchatka
- Asia/Krasnoyarsk
- Asia/Magadan
- Asia/Novokuznetsk
- Asia/Novosibirsk
- Asia/Omsk
- Asia/Sakhalin
- Asia/Vladivostok
- Asia/Yakutsk
- Asia/Yekaterinburg
Со списком всех доступных временных зон можно ознакомиться по ссылке или выполнить команду, которая возвратит вам список временных зон, доступных на вашем сервере.
print_r(DateTimeZone::listIdentifiers());
Делаю сайты на Вордпресс с 2008 года, в том числе уникальные инструменты для решения сложных бизнес‑задач.
Подробнее