PHP 8.0.24 Released!

DateTimeZone::__construct

timezone_open

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

DateTimeZone::__construct -- timezone_open创建新的DateTimeZone对象

说明

面向对象风格

public DateTimeZone::__construct(string $timezone)

过程化风格

timezone_open(string $timezone): DateTimeZone|false

创建新的 DateTimeZone 对象。

DateTimeZone 对象提供了对三种不同类型的时区规则访问。UTC 时差(类型 1)、时区缩写(类型 2)、IANA 时区数据库中公布的时区标识符(类型 3)。

DateTimeZone 对象可以附加到 DateTimeDateTimeImmutable 对象上,以便能够在本地时区呈现这些对象所封装的时区。

参数

timezone

所支持的时区名之一,时差(+0200)或时区缩写(BSD)。

返回值

成功时返回 DateTimeZone 对象。 过程化风格在失败时返回 false

错误/异常

如果提供的时区无效,此方法将抛出 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)

add a note

User Contributed Notes

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