CakeFest 2024: The Official CakePHP Conference

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