2017-05-05 14 views
0

よろしくお願いします。ここには2つの日付オブジェクトがあります:

// $startDate value 
DateTime::__set_state(array(
    'date' => '2017-11-05 00:00:00.000000', 
    'timezone_type' => 3, 
    'timezone' => 'America/Chicago', 
)) 

// $endDate value 
DateTime::__set_state(array(
    'date' => '2017-11-05 23:59:00.000000', 
    'timezone_type' => 3, 
    'timezone' => 'America/Chicago', 
)) 

これらは両方とも正確に同じタイムゾーン情報を持っています。しかし、私が$startDate->format(DateTime::ISO8601)$endDate->format(DateTime::ISO8601)を実行すると、私は異なるタイムゾーンオフセットを取得します。

// $startDate->format(DateTime::ISO8601) 
2017-11-05T00:00:00-0500 

// $endDate->format(DateTime::ISO8601) 
2017-11-05T23:59:00-0600 

何が原因である可能性がありますか?

+0

11月5日はDSTの終了日であるため、UTCオフセットが変更されます。 – aynber

答えて

1

-0500および-0600DateTime::ISO8601フォーマットはタイムゾーンではなく、UTCからのオフセットです。

2017年3月12日日曜日の午前2時から開始するオフセットは、UTCから-6:00です。 11月5日日曜日の午前2時に、2017年の夏時間はオフになります。それ以来、オフセットは次のDSTスイッチオーバーまで1時間少なくなります。

+0

エスケープ夏時間:roll_eyes:....答えはありがとうha! – ryanpitts1

関連する問題