DateTimeZone::__construct
timezone_open
(PHP 5 >= 5.2.0, PHP 7, PHP 8)
DateTimeZone::__construct -- timezone_open — 新しい DateTimeZone オブジェクトを作成する
説明
オブジェクト指向型
手続き型
新しい DateTimeZone オブジェクトを作成します。
DateTimeZone オブジェクトは、
3つの異なるタイムゾーンルールへのアクセスを提供します。
ひとつは
UTC からのオフセット (type 1
),
もうひとつはタイムゾーンの省略形 (type
2
),
そして IANA タイムゾーンデータベースで公開されている
タイムゾーン名
(type 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";
}
?>
上の例の出力は以下となります。
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)