2014-11-02 131 views
1

我使用下面的代碼格式化PHP的一個日期不同的日期:獲取格式化

$date = "2014-11-01"; 
$date_formatted = gmdate("Y-m-d", strtotime($date)); 

當我打印出來,格式化的日期去一天回來。我很驚訝。我不是簡單地尋找解決方案(有很多這樣的簡單的東西)。 我想知道這是怎麼發生的。

echo $date . " ---> " . $date_formatted;  
//Displays: 2014-11-01 ---> 2014-10-31 
+0

似乎對我很好:http://codepad.org/rTXAEHLT – 2014-11-02 04:28:43

+1

看到這個:http://codepad.org/L7YzM3jN – Evert 2014-11-02 04:32:13

回答

6

這是因爲你用gmdate。這會根據提供的時間戳爲您提供格林尼治標準時間的日期。

strtotime將不是默認情況下使用GMT,而是使用您當地的時區。因此,當您撥打gmdate時,它會通過您的時區偏移減少日期和時間。

若要解決此問題,請使用date而不是gmdate或將系統的時區設置爲UTC。