HOWTO · PHP
PHP のニューヨーク タイムゾーン
PHP で America/New_York タイムゾーンを設定し、date() でニューヨークの日付または時刻をフォーマットします。
このページの内容
ニューヨークの日付または時刻を表示するには、date() を呼び出す前に PHP のタイムゾーンを America/New_York に設定します。識別子は America/New_York です。New_York だけでは PHP の完全なタイムゾーン識別子ではありません。
PHP のニューヨーク タイムゾーン
PHP のサポートされているタイムゾーン識別子はマニュアルに記載されています。date_default_timezone_set() でデフォルトのタイムゾーンを設定し、次に date_default_timezone_get() を使って設定された識別子を確認します。セッターはタイムゾーンを受け入れる場合に true を返し、受け入れない場合に false を返します。識別子が設定やユーザー入力に由来する場合はその結果を確認し、日付をフォーマットする前に false の結果を処理してください。
この完全な例では、ニューヨークの時刻を設定し、設定されたタイムゾーンを確認し、ローカルの日付と時刻をフォーマットします。
<?php
$configured = date_default_timezone_set('America/New_York');
if ($configured) {
echo 'Timezone: ' . date_default_timezone_get() . PHP_EOL;
echo 'Date: ' . date('Y-m-d') . PHP_EOL;
echo 'Time: ' . date('H:i:s') . PHP_EOL;
}
この例は、設定された識別子に続いて、実行した時点の日付と時刻を出力します。これら最後の 2 つの値は実行時刻に依存します。フォーマット文字列は、ローカルの日付と時刻のどの部分を表示するかを制御します。Y-m-d では、Y は 4 桁の年、m は 2 桁の月、d は 2 桁の日です。H:i:s は 24 時間制の時、分、秒を使用します。am または pm の接尾辞付きの 12 時間制の時には h:i:sa を使用します。date() の各呼び出しは先に設定したデフォルトのタイムゾーンを使用するため、日付は真夜中前後でサーバーのローカル日付と異なる場合があります。
たとえば、これらのフォーマット文字列は一般的な日付レイアウトを生成します: Y/m/d、d/m/Y、Y.m.d、d-m-Y。フォーマット文字 l は曜日を綴り、小文字の h と大文字の H はそれぞれ 12 時間制と 24 時間制の時刻を選択します。表示コンテキストに適したフォーマットを選択し、date() は第 2 引数としてタイムスタンプを渡さない限り現在の時刻をフォーマットすることに注意してください。
タイムゾーン設定は現在の PHP 実行コンテキストに適用され、それに依存する日付および時刻関数が使用するデフォルトを変更します。アプリケーションがすでにタイムゾーン設定を管理している場合は、無関係なコードが予期しないデフォルトに依存しないよう、適切なリクエストまたはアプリケーションの境界でタイムゾーンを設定してください。タイムゾーンの設定と確認には、同じ識別子の綴り America/New_York を使用してください。
現在の時刻ではなく特定の瞬間については、Unix タイムスタンプを date() の第 2 引数として渡します。たとえば、date('Y-m-d H:i:s', $timestamp) は設定されたタイムゾーンを使用してその瞬間をフォーマットします。タイムスタンプはある瞬間を表します。タイムゾーンはそのローカルの時計とカレンダーの表示を決定します。この区別は、イベント時刻をデータベースに保存し、ニューヨークの読者に表示する際に役立ちます。
ニューヨークでは季節による時計の変更が行われるため、その UTC オフセットは年間を通じて一定ではありません。IANA 識別子 America/New_York を使用すると、PHP はフォーマット対象の日付に関連するタイムゾーン規則を適用できます。アプリケーションが年間を通じてニューヨークのローカル時刻を必要とする場合は、-05:00 のような固定オフセットで置き換えることは避けてください。
プロジェクトがタイムゾーンを一元的に設定する場合は、そのポリシーを 1 つの適切な場所に保持し、日付のフォーマットが一貫してそれに従うようにしてください。