PHP 8.3.4 Released!

DateTimeZone::__construct

timezone_open

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTimeZone::__construct -- timezone_openСоздаёт новый объект DateTimeZone

Описание

Объектно-ориентированный стиль

public DateTimeZone::__construct(string $timezone)

Процедурный стиль

Создаёт новый объект DateTimeZone.

Объект DateTimeZone предоставляет доступ к трём различным типам правил временных зон: Смещение UTC (тип 1), сокращение часового пояса (тип 2) и идентификаторы часовых поясов, опубликованные в базе данных часовых поясов IANA (тип 3).

Объект 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);
} catch(
Exception $e) {
echo
$e->getMessage() . '<br />';
}
}
?>

Результат выполнения приведённого примера:

DateTimeZone::__construct() [datetimezone.--construct]: Unknown or bad timezone (Mars/Phobos)
DateTimeZone::__construct() [datetimezone.--construct]:  Unknown or bad timezone (Jupiter/Europa)

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top