2017-05-05 60 views
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 

任何想法是什么可能造成这种情况?

+0

11月5日是DST结束的日子,因此UTC偏移量会发生变化。 – aynber

回答

1

-0500-0600 in DateTime::ISO8601格式不是时区,而是UTC的偏移量。

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

+0

夏令时:roll_eyes:....感谢您的答案哈! – ryanpitts1

相关问题