(PHP 5 >= 5.2.0, PHP 7, PHP 8)
DateTimeZone::__construct -- timezone_open — Создаёт новый объект DateTimeZone
Объектно-ориентированный стиль
Процедурный стиль
Метод создаёт новый объект DateTimeZone.
Объект DateTimeZone поддерживает три типа представления часового пояса:
тип 1 — смещение относительно времени UTC,
тип 2 — аббревиатура часового пояса
и тип 3 — идентификатор часового пояса, которые публикуются в базе данных часовых поясов организации IANA.
Объект DateTimeZone прикрепляют к объектам DateTime и DateTimeImmutable для форматирования времени в заданном часовом поясе.
timezoneПоддерживаемое название часового пояса, значение смещения в формате +0200 или аббревиатура часового пояса наподобие BST.
Метод возвращает объект DateTimeZone, если выполнился успешно.
Процедурный стиль возвращает false, если возникла ошибка.
При передаче недопустимого часового пояса метод выбрасывает исключение DateInvalidTimeZoneException. До PHP 8.3 вместо этого выбрасывалось исключение Exception.
| Версия | Описание |
|---|---|
| 8.3.0 | При передаче недопустимых значений часового пояса вместо общего исключения Exception метод теперь выбрасывает исключение DateInvalidTimeZoneException. |
Пример #1 Пример создания и прикрепления часового пояса DateTimeZone к объекту даты и времени DateTimeImmutable
<?php
$d = new DateTimeImmutable("2022-06-02 15:44:48 UTC");
$timezones = ['Europe/London', 'GMT+04:45', '-06:00', 'CEST'];
foreach ($timezones as $tz) {
$tzo = new DateTimeZone($tz);
$local = $d->setTimezone($tzo);
echo $local->format(DateTimeInterface::RFC2822 . ' — e') . "\n";
}Результат выполнения приведённого примера:
Thu, 02 Jun 2022 16:44:48 +0100 — Europe/London Thu, 02 Jun 2022 20:29:48 +0445 — +04:45 Thu, 02 Jun 2022 09:44:48 -0600 — -06:00 Thu, 02 Jun 2022 17:44:48 +0200 — CEST
Пример #2 Пример перехвата ошибок при создании объекта DateTimeZone
<?php
// Обработка ошибок путём перехвата исключений
$timezones = array('Europe/London', 'Mars/Phobos', 'Jupiter/Europa');
foreach ($timezones as $tz) {
try {
$mars = new DateTimeZone($tz);
echo $mars->getName() . "\n";
} catch(Exception $e) {
echo $e->getMessage() . "\n";
}
}Результат выполнения приведённого примера:
Europe/London DateTimeZone::__construct() [datetimezone.--construct]: Unknown or bad timezone (Mars/Phobos) DateTimeZone::__construct() [datetimezone.--construct]: Unknown or bad timezone (Jupiter/Europa)