Если вы заметили, что время на вашем сайте не совпадает с вашим часовым поясом и вы хотели бы его поправить, то для этого существует несколько способов. Большинство виртуальных хостингов запрещает редактирование этого файла, но не отчаивайтесь, достигнуть того же результата можно внеся некоторые изменения в файл.htaccess. В данном руководстве вы узнаете, как изменить часовой пояс вашего сайта.
Перед тем, как вы начнёте это руководство, вам понадобится следующее:
Файл .htaccess находится в каталоге public_html . Вы можете открыть его с помощью Файлового Менеджера в вашей панели управления хостингом или подключившись к вашей учётной записи через FTP-клиент (например, FileZilla). Данные руководства детально рассказывают об обоих способах:
Список всех поддерживаемых часовых поясов может быть найден на этом сайте .
Во-первых, выберите свой регион.
Теперь выберите часовой пояс, который вы хотите использовать. В нашем случае, мы выберем Europe/Moscow.
После того, как вы узнаете формат вашего часового пояса, откройте файл .htaccess . После этого, добавьте следующий код в самый верх файла .htaccess :
Php_value date.timezone "Europe/Moscow"
ВАЖНО! Вместо Europe/Moscow впишите нужный вам часовой пояс.
Поздравляем, вы успешно изменили часовой пояс вашего сайта!
Это краткое руководство рассказало вам о том, как изменить часовой пояс на сайте через.htaccess. Теперь вам не нужно беспокоиться о неправильном времени на вашем сайте.
Это небольшая статья о том, как работать с временными зонами при хранении значений даты / времени в базе данных. Базы данных или язык программирования, который вы решите использовать, решающего значения не имеет, так как описываемые в статье явления универсальны. Свои действия я буду показывать на примере использования связки MySQL и PHP. Проблема, связанная с временными зонами, достаточно банальна. Многие часто забывают об их существовании, а некоторые считают их чем-то чрезмерно сложным. Обычно при настройке базы данных или при пользовании услугами веб-хостинга ваши временные зоны настроены по умолчанию. Настройки по умолчанию подойдут, если вы работаете с одним сервером, но что произойдет, если вы решите переместить его?
Тот же вопрос закономерен, если у вас несколько серверов в разных местах.
Вместо того чтобы хранить временные зоны с указанием каждой даты, лучше взять за основу стандартное время и связать все ваши даты с ним. Такой способ позволяет сделать переход на стандартное время до того, как значение будет сохранено в базе данных. Вообще, хорошая идея - просто использовать UTC +00:00
.
Если мы хотим получить полный контроль над датой и временем, мы можем построить функцию следующим образом:
function get_date($date)
{
date_default_timezone_set("EST");
$date = date("Y-m-d H:i:s", strtotime($date));
date_default_timezone_set("UTC");
return $date;
}
В MySQL это делается путем установки UTC смещения, которое может быть сделано так же легко, как это было в PHP, путем внесения следующих изменений:
default-time-zone = "+00:00"
К счастью, MySQL предоставляет удобную функцию, которая дает нам возможность легко обновлять существующие часовые пояса.
ПРИМЕЧАНИЕ: Если у вас есть какие-нибудь временные метки, то их нужно обновить в первую очередь.
Мы можем осуществлять поиск по всем полям даты и времени в нашей базе с помощью следующего запроса:
SELECT *
FROM `information_schema`.`COLUMNS`
WHERE
`TABLE_SCHEMA`="table_name" AND
(`DATA_TYPE`="timestamp" OR `DATA_TYPE`="datetime" OR `DATA_TYPE`="date");
Отсюда мы можем использовать следующий запрос, чтобы обновить даты / время в наших таблицах:
UPDATE `table_name` SET `timestamp`=CONVERT_TZ(`timestamp`, "-05:00", "+00:00");
Где -05:00
- текущая временная зона, в формате которой хранится время (она как и в предыдущем случае относится к Восточной). Временная зона +00:00
, в которую мы хотим преобразовать, в данном случае относится к UTC.
Если в процессе управления виртуальным хостингом возникла необходимость изменить часовой пояс по умолчанию, то такое действие можно с лёгкостью выполнить в несколько шагов, которые описаны ниже.
Для того, чтобы изменить часовой пояс перейдите в cPanel -> Программное обеспечение -> Select PHP Version -> Switch to PHP options .
Следующим шагом будет изменение значения переменной date.timezone на необходимый вам часовой пояс. Со списком доступных часовых поясов вы сможете ознакомиться в последнем пункте статьи.
После внесения необходимых изменений важно нажать на кнопку «Сохранить изменения» , которая расположена внизу страницы PHP Selector .
Чтобы убедиться в том, что указанное значение timezone было применено, можно воспользоваться PHP-функцией phpinfo() , которая отображает информацию о всех установленных параметрах php. Для этого создайте в public_html нажмите на кнопку «Файл» в меню диспетчера.
После этого сохраните файл и откройте его в браузере. В данном примере файл будет доступен по адресу:
http://главный_домен/phpinfo.php
В открывшейся странице найдите раздел date , в котором будет расположена таблица со значением текущего часового пояса. В данном случае отображается указанная выше зона Europe/Kiev .
На этом процесс изменения timezone окончен.
В дополнение прилагаем ниже список возможных значений часового пояса:
Africa/Cairo Africa/Casablanca Africa/Harare Africa/Monrovia Africa/Nairobi America/Bogota America/Buenos_Aires America/Caracas America/Chihuahua America/La_Paz America/Lima America/Mazatlan America/Mexico_City America/Monterrey America/Santiago America/Tijuana Asia/Almaty Asia/Baghdad Asia/Baku Asia/Bangkok Asia/Chongqing Asia/Dhaka Asia/Hong_Kong Asia/Irkutsk Asia/Jakarta Asia/Jerusalem Asia/Kabul Asia/Karachi Asia/Kathmandu Asia/Kolkata Asia/Krasnoyarsk Asia/Kuala_Lumpur Asia/Kuwait Asia/Magadan Asia/Muscat Asia/Novosibirsk Asia/Riyadh Asia/Seoul Asia/Singapore Asia/Taipei Asia/Tashkent Asia/Tbilisi Asia/Tehran Asia/Tokyo Asia/Ulaanbaatar Asia/Urumqi Asia/Vladivostok Asia/Yakutsk Asia/Yekaterinburg Asia/Yerevan Atlantic/Azores Atlantic/Cape_Verde Atlantic/Stanley Australia/Adelaide Australia/Brisbane Australia/Canberra Australia/Darwin Australia/Hobart Australia/Melbourne Australia/Perth Australia/Sydney Canada/Atlantic Canada/Newfoundland Canada/Saskatchewan Europe/Amsterdam Europe/Athens Europe/Belgrade Europe/Berlin Europe/Bratislava Europe/Brussels Europe/Bucharest Europe/Budapest Europe/Copenhagen Europe/Dublin Europe/Helsinki Europe/Istanbul Europe/Kiev Europe/Lisbon Europe/Ljubljana Europe/London Europe/Madrid Europe/Minsk Europe/Moscow Europe/Paris Europe/Prague Europe/Riga Europe/Rome Europe/Sarajevo Europe/Skopje Europe/Sofia Europe/Stockholm Europe/Tallinn Europe/Vienna Europe/Vilnius Europe/Volgograd Europe/Warsaw Europe/Zagreb Greenland Pacific/Auckland Pacific/Fiji Pacific/Guam Pacific/Midway Pacific/Port_Moresby US/Alaska US/Arizona US/Central US/Eastern US/East-Indiana US/Hawaii US/Mountain US/Pacific US/Samoa
Хотите новое имя для веб-сайта? У нас доступна
Настройка часового пояса (по умолчанию) очень необходим для правильной обработки данных. Эта статья «Настройка Timezone в php.ini» поможет вам узнать, как можно настроить часовой пояс в файле конфигурации PHP (php.ini) или внутри любого PHP-скрипта для временного использования.
Для установки часового пояса по умолчанию для вашей PHP среды, выполните следующие 4 простых шага.
1. Необходимо найти конфигурационный файл php.ini и это можно сделать:
# find / -type f -name php.ini
По умолчанию php.ini лежит в:
Для CentOS,RedHat или Fedora будет лежать:
/etc/php.ini
Для Ubuntu, Debian или LinuxMint будет лежать:
/etc/php5/apache2/php.ini
2. Следующим действием будет поиск временных зон (для вашей локации), для этого, стоит посетить сайт и найти свою зону для php:
3. Прописываем найденную зону в файл php.ini. Для примера, я возьму свою зону — ‘Europe/Kiev’. Открываем конфигурационный файл и делаем изменения:
[...] date.timezone = "Europe/Kiev" [...]
ВНИМАНИЕ! Поищите опцию «date.timezone» в данном файле, возможно данный параметр уже прописан.
4. Перезапускаем веб-сервер:
# service httpd restart
# service apache2 restart
Если другой сервер (nginx, tomcat, lighttpd), то перезапустите его.
Так же, можно прописать данный параметр в самом php файле следующим образом:
Настройка Timezone в php.ini завершена.
Иногда возникает такая ситуация, что текущее время на сервере не соответствует вашему текущему часовому поясу или часовому поясу региона, на который ориентирован ваш сайт.
Чтобы было понятно, напомню: территориально Россия очень большая, и далеко не всем нужно, чтобы их сайты «жили» по московскому времени. Например, Урал, Сибирь, Дальний восток и т.д.
Серверы большинства популярных российских хостинг-провайдеров размещены на технологических площадках Москвы и Санкт-Петербурга и по-умолочанию настроены, естественно, на московскую временну́ю зону. Сервер не может автоматически подстраиваться под ваше текущее местоположение и переводить системные часы. В связи с чем, работа функций даты и времени на сайте может быть не совсем корректной. Естественно, сейчас речь не идёт о 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 поддерживаются следующие временные зоны:
Со списком всех доступных временных зон можно ознакомиться по ссылке или выполнить команду, которая возвратит вам список временных зон, доступных на вашем сервере.
Print_r(DateTimeZone::listIdentifiers());