PHP - 2个日期之间的奇怪差异(90000而不是86400)

时间:2011-11-01 17:50:43

标签: php datetime date

今天PHP的一些奇怪行为:

$ds = array('2011-10-28', '2011-10-29', '2011-10-30', '2011-10-31','2011-11-01');
for($i=0; $i<count($ds); $i++) {
  print_r($ds[$i].' '.strtotime($ds[$i])."\n");
  if ($i < count($ds)-1) {
    print_r(abs(strtotime($ds[$i+1]) - strtotime($ds[$i]))."\n");
  }
}

输出:

2011-10-28 1319756400
86400
2011-10-29 1319842800
86400
2011-10-30 1319929200
90000
2011-10-31 1320019200
86400
2011-11-01 1320105600

任何人都可以在30日到31日之间解释异常的90万吗?

3 个答案:

答案 0 :(得分:5)

90000秒是25小时 - 每天25小时只能意味着一件事......时钟在夏令时结束时被放回。

当然在英国(我不知道其他地方)发生在星期天早上,结果是30日是25小时的一天。

答案 1 :(得分:2)

由于夏令时的变化,这似乎是一个额外的小时:

90000 = 25 * 60 * 60

答案 2 :(得分:1)

为了正确转换,您应该在日期中添加字符串“+00”(UTC时区) 例如strtotime(“2011-10-30 +00”);