Как управлять часовыми поясами в PHP
В этой краткой статье мы объясним основы использования часовых поясов в PHP. Работы с часовыми поясами — важный навык для каждого программиста, работающего с веб-приложениями. Поскольку на протяжении многих лет PHP в основном использовался для веб-приложений, он имеет довольно простую, но всестороннюю поддержку часовых поясов.
Часовые пояса и PHP
Часовые пояса поддерживаются в PHP с версии 4. Но то, что начиналось как базовая реализация функции date_default_timezone_set()
, быстро развилось в PHP 5 и 7 с введением классов DateTimeZone
и DateTimeZoneImmutable
.
DateTimeZoneImmutable
— подкласс DateTimeZone
позволяющий создавать часовые пояса, невосприимчивые к изменениям. Эта функция может быть очень полезна в ситуациях, когда нужно быть уверенным, что часовой пояс никогда не изменится.
Функция date_default_timezone_set()
устанавливает часовой пояс по умолчанию, используемый всеми функциями времени/даты в данном скрипте. Эта функция позволяет настроить часовой пояс, но имеет очень небольшую степень детализации, что вынуждает использовать один и тот же часовой пояс в течении выполнения скрипта.
Классы DateTimeZone
и DateTimeZoneImmutable
привнесли больше контроля и гибкости в работу с часовыми поясами. Теперь мы можем получить доступ ко всем видам информации о часовом поясе, а также к нескольким экземплярам разных часовых поясов в одном скрипте.
Использование в PHP часовых поясов
Использование date_default_timezone_set()
<?php
date_default_timezone_set('Europe/Moscow');
Часовые пояса в методе date_default_timezone_set()
всегда определяются в форматах Континент/город
или Континент/Страна/Город
. Полный список часовых поясов поддерживаемых в PHP, вы можете найти по ссылке
Это установит часовой пояс в часовой пояс переданный в качестве аргумента. После того как мы установили часовой пояс, можно использовать такие функции, как date_default_timezone_get()
или любые другие функции, связанные со временем, такие как date()
, для доступа к информации о новом часовом поясе.
Использование класса DateTimeZone
Лучшим способом использования часовых поясов в PHP является использование класса DateTimeZone
. Это означает, что у нас есть доступ к большему количеству функций для доступа к информации и управления часовыми поясами, и мы можем создавать несколько экземпляров класса, что позволяет работать с несколькими часовыми поясами:
<?php
$timezone = new DateTimeZone('Asia/Novosibirsk');
$datetime = new DateTime($date, $timezone);
echo $datetime->format('Y-m-d H:i:s');
В этом примере мы создаём новый объект DateTimeZone
и передаём его новому экземпляру DateTime
. Затем объект DateTime
будет использовать информацию из объекта DateTimeZone
. Наконец, мы используем функцию format()
для вывода даты в предпочтительном формате.
Заключение
Как вы видели, работать с часовыми поясами в PHP довольно просто. Убедитесь, что выбрали лучший способ для своего варианта использования, и PHP вам поможет!