Php DateTime::夏时制的差异和结束

Php DateTime::夏时制的差异和结束,php,datetime,dst,Php,Datetime,Dst,上周末我们的DST结束了,时钟向后拨了1个小时。我发现DateTime::diff()有一个奇怪的行为,当比较日期在不同的时间:春季和冬季时 new DateTime('2015-10-28 12:50:00')->diff(new DateTime('2015-10-19 13:20:00')) result = {DateInterval} [15] y = 0 m = 0 d = 9 h = -1 # negative hour! i =

上周末我们的DST结束了,时钟向后拨了1个小时。我发现DateTime::diff()有一个奇怪的行为,当比较日期在不同的时间:春季和冬季时

new DateTime('2015-10-28 12:50:00')->diff(new DateTime('2015-10-19 13:20:00'))

result = {DateInterval} [15]
    y = 0
    m = 0
    d = 9
    h = -1   # negative hour!
    i = 30
    s = 0
当差值超过一小时时,一切正常:

new DateTime('2015-10-28 12:50:00')->diff(new DateTime('2015-10-19 14:20:00'))

result = {DateInterval} [15]
    y = 0
    m = 0
    d = 8
    h = 22
    i = 30
    s = 0

有没有办法解决这个问题?这是PHP中的错误吗?

是的,这是一个错误,PHP目前不处理DST转换。错误报告(仍处于打开状态)和(在PHP5.3.9中修复)描述了您遇到的问题。最佳做法是使用UTC进行所有日期计算,这样可以避免此问题。请参阅此以了解更多详细信息