5

日付を学んでいて、今は苦労しています。

$london = new DateTime();
$london->setTimestamp(0);
$london->setTimeZone(new DateTimeZone('Europe/London'));

echo $london ->format('d-m-Y H-i-s');

結果:

01-01-1970 01-00-00

UTC +0:00真夜中のロンドンではないでしょうか?たとえば、New York は前の日付の 19:00 を返しますが、これは正しくはUTC -5:00です。モスクワが戻っ01-01-1970 03-00-00てきますが、これも正しくありません (UTC +3:00とは対照的にUTC +4:00)

ただし、を使用しない場合->setTimestamp、ロンドンの現在の時刻は正しく表示されます。

ライブコード: http://sandbox.onlinephpfunctions.com/

また、私のローカル タイムゾーンはEurope/Prague( UTC +1:00) です。同様にテストさdate_default_timezone_set('Europe/London')れました。

私のロジックにエラーがあると思いますか?

4

1 に答える 1

12

これは、明らかに、英国が1970年1月1日の英国夏時間でUTC(強調鉱山)より1時間進んでいたためです。

1959年から60年の冬にかけて、180の国家機関に相談したところ、通年のGMT + 1に変更することをわずかに好むことが明らかになりましたが、夏時間の長さは、国内での使用ではなく、試験として延長されました。グリニッジ標準時は廃止されました。[6] 1966年から67年にかけてのさらなる調査により、ハロルドウィルソン政府は英国標準時の実験を導入し、英国は年間を通じてGMT+1のままでした。これは、1968年10月27日から1971年10月31日までの間に行われ、以前の取り決めに戻った。

timeanddate.comのタイムゾーンコンバーターは、このようなものを見つけるための優れたツールです。

于 2013-02-16T14:04:38.967 に答える