2017-03-01 77 views
1

這裏是我的代碼:這是一個PHP date()bug嗎?

<?php 

echo date("Y-m-d H:i:s",1477785600) ; 
echo "<br />"; 
echo date("Y-m-d H:i:s",1477789200) ; 

?> 

和結果是

2016-10-30 02:00:00 
2016-10-30 02:00:00 

爲什麼日期()得到不同的時間戳相同的結果?
這是一個PHP的錯誤?

我的環境設置爲:

  • date.timezone =歐洲/柏林
  • PHP版本30年6月5日

  • +9

    是,當你從夏令時改爲冬令時的一天嗎? – Barmar

    +0

    當我運行你的代碼時,我得到了這個輸出:2016-10-29 17:00:00 2016-10-29 18:00:00。我猜這與巴馬爾建議的時間變化有關。我在加拿大/蒙特利爾時區。如果時間在3AM重置爲凌晨2點,此輸出實際上可能是正確的。 – TopCheese

    +0

    @Barmar你是對的! –

    回答

    6

    這是正確的輸出。在西歐,2016年10月30日由於夏令時爲2:00兩次:

    1. CEST(+0200)是第一個2:00。

    2. 一小時後,在3點,時鐘重置了一個小時,現在是2:00 CET(+0100)。

    這裏有一個更清楚的輕微test case

    date_default_timezone_set('Europe/Berlin'); 
    echo date("r",1477785600) . "\n"; 
    echo date("r",1477789200) ; 
    
    Sun, 30 Oct 2016 02:00:00 +0200 
    Sun, 30 Oct 2016 02:00:00 +0100