Как управлять часовыми поясами в PHP

Источник: «Quick Tip: How To Manage Timezones in PHP»
Изучите основы использования часовых поясов в PHP и как сделать лучший выбор из набора функций предлагаемых 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 вам поможет!

Дополнительные материалы

Предыдущая Статья

TypeScript или JavaScript: Что выбрать, чтобы стать веб-разработчиком

Следующая Статья

10 часто задаваемых вопросов по GraphQL