php date给出了2个不同时间戳的相同日期

时间:2013-08-26 11:38:02

标签: php date

这里是我的代码:

<?php
    $aaa = array(
        1224972000,
        1224973800,
        1224975600,
        1224977400,
        1224979200,
        1224981000,
        1224982800,
        1224984600,
        1224986400,
        1224988200,
        1224990000,
        1224991800,
        1224993600,
        1224995400,
        1224997200,
    );
    foreach ($aaa as $ts) {
        $date = \date('m/d/Y,H:i:s', $ts);
        echo "$date \n";
    }

And the result is :
10/26/2008,00:00:00
10/26/2008,00:30:00
10/26/2008,01:00:00
10/26/2008,01:30:00
**10/26/2008,02:00:00
10/26/2008,02:30:00
10/26/2008,02:00:00
10/26/2008,02:30:00**
10/26/2008,03:00:00
10/26/2008,03:30:00
10/26/2008,04:00:00
10/26/2008,04:30:00
10/26/2008,05:00:00
10/26/2008,05:30:00
10/26/2008,06:00:00

为什么?

3 个答案:

答案 0 :(得分:4)

我想在你选择的时区,日期从当天的夏令时开始,所以有两个2点的ams。我看到你在利物浦学习 - 这是在英国的机器上吗? 10月的最后一个星期天传统上是英国夏令时和格林威治标准时间之间的转换日期。我相信欧洲大部分地区的情况也是如此。

尝试添加:

    date_default_timezone_set("UTC");

在脚本开头;这将在没有DST调整的情况下将时区固定为一个。你会发现你会得到独特的结果。

答案 1 :(得分:3)

取决于你所在的时区!

对于您所在的地区,夏令时可能会在每年10月的最后一个星期日结束,或者就像2008年那样。

因此,不同的时间戳代表同一时间。

答案 2 :(得分:-1)

我的答案是: 我的服务器给我 reno @ ubuntu:〜$ date -d @ 1224979200 dimanche 26 octobre 2008,02:00:00(UTC + 0200) reno @ ubuntu:〜$ date -d @ 1224982800 dimanche 26 octobre 2008,02:00:00(UTC + 0100)

原因是 http://www.lecalendrier.fr/changement-d-heure-2008

我太蠢了