DateTimeZone::__construct

timezone_open

新しい DateTimeZone オブジェクトを作成する

説明

オブジェクト指向型

public DateTimeZone::__construct(string $timezone)

手続き型

DateTimeZonefalse timezone_open(string $timezone)

新しい DateTimeZone オブジェクトを作成します。

DateTimeZone オブジェクトは、 3つの異なるタイムゾーンルールへのアクセスを提供します。 ひとつは UTC からのオフセット (type 1), もうひとつはタイムゾーンの省略形 (type 2), そして IANA タイムゾーンデータベースで公開されている タイムゾーン名 (type 3) です。

DateTimeZone オブジェクトは、 DateTimeDateTimeImmutable に設定できます。 こうすることで、 ローカルのタイムゾーンとしてカプセル化された、 タイムゾーンを表示させることができます。

パラメータ

timezone

サポートするタイムゾーン名 のいずれかや、 オフセット値 (+0200)、 またはタイムゾーンの省略名(BST)。

戻り値

成功した場合に DateTimeZone を返します。 手続き型 の場合は、失敗したときに false を返します。

エラー / 例外

指定されたタイムゾーンが有効なタイムゾーンとして認識できない場合、 DateInvalidTimeZoneException をスローします。PHP 8.3 より前のバージョンでは、 Exception をスローしていました。

変更履歴

バージョン 説明
8.3.0 無効な値を指定した場合、 一般的な Exception ではなく、DateInvalidTimeZoneException がスローされるようになりました。

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