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 对象可以附加到 DateTimeDateTimeImmutable 对象,以便能够在本地时区中呈现这些对象封装的时区。

参数

timezone

支持的 时区名称 之一,偏移量值 (+0200) 或时区缩写 (BST)。

返回值

成功时返回 DateTimeZone。过程式风格在失败时返回 false

错误/异常

如果提供的时区不被识别为有效的时区,则此方法将抛出 DateInvalidTimeZoneException。在 PHP 8.3 之前,这是一个 Exception

变更日志

版本 描述
8.3.0 无效值现在返回 DateInvalidTimeZoneException 而不是通用 Exception

示例

示例 #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)

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top