PHP Conference Japan 2024

DateTimeZone::__construct

timezone_open

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

DateTimeZone::__construct -- timezone_open建立新的 DateTimeZone 物件

說明

物件導向風格

public DateTimeZone::__construct(字串 $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