0

私は次のコードを持っています:

var_dump(new \DateTime('now', new DateTimeZone('GMT')));

次の出力が得られますが、これは1時間遅れています。

object(DateTime)#894 (3) { ["date"]=> string(19) "2012-09-13 13:54:26" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "UTC" } 

ただし、コードを次のように変更した場合:

var_dump(new \DateTime('now', new DateTimeZone(date_default_timezone_get())));

次に、次の正しい出力を取得します。

object(DateTime)#894 (3) { ["date"]=> string(19) "2012-09-13 14:54:26" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/London" } 

私はDerickRethansのブログを読んでいましたが、タイムゾーン3では夏時間を考慮に入れる必要がありますが、最初のコードスニペットで実際の1時間前に取得する理由を誰かが説明できますか?!

4

1 に答える 1

2

さて、最初のスニペットでは、「GMT」のタイムゾーンを要求しています。これはややあいまいな用語ですが、通常はGMT自体を正確に意味すると思います。UTCとほぼ同等であり、夏時間はありません。そのため、夏時間を適用せず、タイムゾーンをUTCとして報告しています。

ヨーロッパ/ロンドンのタイムゾーンは、半年をGMTで、半年をBSTで過ごします。

可能な限り、3文字のタイムゾーンの略語を避けて操作することをお勧めします。彼らは失敗のあらゆる種類の可能性に満ちています。(ブログ投稿を読んだので、それは基本的にそこでも提案されていることです。)

于 2012-09-13T14:05:07.440 に答える