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

# DateTimeZone::__construct

# timezone_open

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

DateTimeZone::__construct -- timezone_open — 新しい DateTimeZone オブジェクトを作成する

### 説明

オブジェクト指向型

public function DateTimeZone::__construct(string `$timezone`)

手続き型

function timezone_open(string `$timezone`): DateTimeZone|false

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

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

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

### パラメータ

`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);
            echo $mars->getName() . "\n";
        } catch(Exception $e) {
            echo $e->getMessage() . "\n";
        }
    }

上の例の出力は以下となります。

    Europe/London
    DateTimeZone::__construct() [datetimezone.--construct]: Unknown or bad timezone (Mars/Phobos)
    DateTimeZone::__construct() [datetimezone.--construct]: Unknown or bad timezone (Jupiter/Europa)

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open