PHP date()从UNIX Epoch中丢失了一个小时

The*_*lis 4 php datetime date

嗨,我遇到了一些PHP date()函数的奇怪行为.我试图在这样的时间增加一周的日期.

码:

<?php
    date_default_timezone_set('Europe/London');
    echo 7*24*60*60;
    echo '<br>';
    echo date('d/m/Y H:i:s', 0);
    echo '<br>';
    echo date('d/m/Y H:i:s', 604800);
?>
Run Code Online (Sandbox Code Playgroud)

这导致以下输出.

OUTPUT:

604800
01/01/1970 01:00:00
08/01/1970 01:00:00
Run Code Online (Sandbox Code Playgroud)

这是你所期望的,日期增加了7天到第二天.但是在我达到一定的秒数之后,日期功能似乎从日期开始减少了一个小时.

码:

<?php
    date_default_timezone_set('Europe/London');
    echo (1351468800 - 1350864000);
    echo '<br>';
    echo date('d/m/Y H:i:s', 1350864000);
    echo '<br>';
    echo date('d/m/Y H:i:s', 1351468800);
?>
Run Code Online (Sandbox Code Playgroud)

结果如下输出

OUTPUT:

604800
22/10/2012 01:00:00
29/10/2012 00:00:00
Run Code Online (Sandbox Code Playgroud)

正如您所看到的那样,即使两个日期之间的差异为604800秒,日期也会丢失一个小时.我在两个不同的服务器上测试了这个,我也使用DateTime对象测试了类似的代码,但结果仍然相同.我哪里错了?

Sab*_*lik 6

我相信DST在这里发挥作用.DST于2012年10月28日在伦敦结束.