(PHP 5 >= 5.2.0, PHP 7, PHP 8)
DateTimeZone::__construct -- timezone_open — 创建新的DateTimeZone对象
面向对象风格
过程化风格
创建新的 DateTimeZone 对象。
DateTimeZone 对象提供了对三种不同类型的时区规则访问。UTC 时差(类型 1
)、时区缩写(类型
2
)、IANA 时区数据库中公布的时区标识符(类型 3
)。
DateTimeZone 对象可以附加到 DateTime 和 DateTimeImmutable 对象上,以便能够在本地时区呈现这些对象所封装的时区。
成功时返回 DateTimeZone 对象。
过程化风格在失败时返回 false
。
如果提供的时区不能识别为有效的时区,此方法将抛出 DateInvalidTimeZoneException 异常。在 PHP 8.3 之前,是 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";
}
?>
以上示例会输出:
示例 #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)