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

# DateTimeZone::__construct

# timezone_open

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

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

### Описание

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

public function DateTimeZone::__construct(string `$timezone`)

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

function timezone_open(string `$timezone`): DateTimeZone|false

Метод создаёт новый объект 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)

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open