0

好吧,我难住了。这是我拥有的两个日期对象:

// $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

关于可能导致这种情况的任何想法?

4

1 回答 1

1

-0500并且格式不是时区,而是与 UTC 的偏移量-0600DateTime::ISO8601

从 2017 年 3 月 12 日星期日凌晨 2 点开始,与 UTC 的偏移量为 -6:00。2017 年 11 月 5 日星期日凌晨 2 点,夏令时将关闭。从那时起,直到下一次 DST 切换,偏移量将减少 1 小时。

于 2017-05-05T15:42:38.063 回答