PHP - 文字列のタイムゾーン形式をオフセット整数に変換する [クローズド]
-
02-01-2020 - |
質問
非常に簡単です:
PHP は次の形式でタイムゾーンを返します。
"America/Los_Angeles"
それを次のように変換したいです:
-7
カスタム関数との差分を計算して変換するコードがたくさん見つかりました。しかし、ミニマリストとして、値をすぐに取得するためのもっと簡単な方法 (おそらく datetime 関数) がないとは信じられません。誰かこれについて知っていますか?
解決
$dateTimeZone = new DateTimeZone("America/Los_Angeles");
$date = new DateTime(null, $dateTimeZone);
echo $dateTimeZone->getOffset($date)/60/60;
他のヒント
PHP は、次の標準タイムゾーンを使用します。 IANA タイムゾーン データベース.
「アメリカ/ロサンゼルス」は ない -7と同じ。-7 は「タイムゾーン」ではなく「タイムゾーンオフセット」です。「タイムゾーン != オフセット」を参照してください。 タイムゾーンタグ Wiki.
それを考慮してください "America/Los_Angeles"
は米国太平洋時間を表し、太平洋夏時間 (PDT) ではわずか -7 です。一年の残りの期間は太平洋標準時 (PST) で、-8 時間です。
John の回答で提供されているコードは、タイムゾーンが使用するオフセットを正確に提供します。 現在 日時。コードを実行するタイミングに応じて値が変化することに注意してください。
また、特定の時点における特定のタイム ゾーンのオフセットを決定することはできますが、その逆は当てはまらないことを認識する必要があります。あなた できない -7 をタイム ゾーンとして扱い、誰かがそれが太平洋夏時間であることを認識できることを期待します。-7 は、アリゾナ州が年間を通じて使用する山岳標準時にも適用されることを考慮してください。
所属していません StackOverflow