web-dev-qa-db-ja.com

UTCは夏時間を遵守しますか?

任意のタイムゾーンをUTCに変換し、逆にしたいスクリプトを記述しようとしています。しかし、DSTの考慮の有無にかかわらず、タイムゾーンをUTCに変換している間、同じUTC時間を与えることを知りました。例:これを変換しようとすると:

$mytime = '2011-03-31 05:06:00.000';
$myzone = 'America/New_York';

dSTありおよびDSTなしのUTCに、iは..

(New_York->UTC DST=Yes)2011-03-31 09:06:00
(New_York->UTC DST=No)2011-03-31 09:06:00 ..........

これはコレクトですか?誰でもあなたの答えをください。

75
0001

いいえ、UTC自体にDSTはありません。これは、他の時間帯が相対的に表現される一定の基準フレームです。

Wikipedia UTCページ から:

UTCは季節の変化に伴って変化しませんが、タイムゾーンの管轄区域が夏時間または夏時間を遵守している場合、現地時間または市民時間は変化する可能性があります。たとえば、UTCは、冬の間は米国東海岸の現地時間よりも5時間進んでいますが、夏の間は4時間進んでいます。

言い換えれば、タイムゾーンがDSTを監視する場合、DSTの移行があるとUTCからのオフセットが変化しますが、それはUTCではなくDSTを監視するそのタイムゾーンです。

PHPタイムゾーンの処理について詳しく知らない場合、変換で "with DST"または "without DST"を指定できることは奇妙に思えます。タイムゾーン自体がDSTの開始時刻を指定します。 ..自分で指定する必要はありません。

124
Jon Skeet

私はこのコードを使用して同じ問題を抱えています:

date_default_timezone_set('UTC');
$nowdate = date('l jS \of F Y h:i:s A');
echo "Current date and time is: " . $nowdate;

現在は夏であり、このコードが生成する時間は1時間遅れています。したがって、PHPのUTC時間はDSTに合わせて調整されるとは思いません。

誰かが解決策を持っているかどうかを確認するのは興味深いです...

編集:

フォーラムでこのコードを見つけ、完全に動作します!!

date_default_timezone_set('Europe/London');
$TIME =  date("m/d/Y H:i",time());

したがって、$ TIMEを使用して現在の日付と時刻を呼び出すことができます。 date()タグ内のビットを変更することにより、出力を調整して異なる表示を行うことができます。 date()の出力を調整する場合は、このガイドを使用してください。 http://php.net/manual/en/function.time.php

お役に立てれば :)

1
MattFiler