PHP日期函数为两个不同的时间戳提供相同的日期。

3

这是我的代码:

<?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

为什么?

2
那有什么问题吗? - Deepu
你还期待什么结果? - Prabhakaran
1
你所在的时区是哪个(或者你的服务器)?2008年10月26日是俄罗斯/澳大利亚和其他一些国家取消夏令时的日期,我不想列举。看起来你得到了这个结果就是因为这个原因。 - N.B.
这里没有任何问题 http://phpfiddle.org/lite/code/bpd-1sm - user1646111
3个回答

4
我想象在你选择的时区,当天的日期会从夏令时转换为标准时间,所以会有两个凌晨2点。我看到你正在利物浦学习,这是在英国机器上吗?十月的最后一个星期日传统上是英国夏令时和格林威治标准时间之间的转换日期。我相信这也适用于大多数欧洲国家。
尝试添加:
    date_default_timezone_set("UTC");

在你的脚本开头添加这行代码;它将固定时区为一个没有夏令时调整的时区。你会发现你得到了唯一的结果。

3

这取决于您所在的时区!

对于您所在的地区,夏令时可能在每年十月的最后一个星期日结束,或者至少在2008年是这样。

因此,不同的时间戳表示相同的时间。


-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 我太蠢了。

基本上,大约有4个人告诉你答案,然后你得到了它 :) 干得好。 - N.B.
1
-1 是因为:您忽略了其他正确的答案,并且在英文网站上链接到了法语资源。 - STT LCU
你回答得太快了。 - jeannot
Jeannot至少应该有点良心,接受@MattGibson的答案:https://dev59.com/gHbZa4cB1Zd3GeqPCBwL#18443244 - STT LCU

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接