2011-10-07 198 views
1

在這個奇怪的錯誤只是偶然與PHP的DateTime對象...... 檢查了這一點:php日期時間對象與Unix時間戳錯誤 - 錯誤?

<?php 
$date = 1335823200; 
echo date('d',$date); 
echo '<br />'; 
$date = new DateTime("@$date"); 
echo $date->format('d'); 
?> 

返回:

06 
05 

它不與任何時間戳發生。我懷疑它與不同的時區有關,但是用setlocale()來玩並沒有什麼幫助。順便說一下,DateTime中的'@'需要能夠使用unix時間戳(請參閱錯誤報告here)。下面幾個時間戳來測試:

1333663200 
1338588000 
1338847200 

回答

2

既然你沒有指定時區爲DateTime假設它是UTC,而date方面當前時區(由date_default_timezone_set指定或php.ini拍攝)。只要執行此操作,請參閱:

$date = 1335823200; 
echo date('d-m-Y H:i:s',$date); 
echo '<br />'; 
$date = new DateTime("@$date"); 
echo $date->format('d-m-Y H:i:s'); 
+0

該死的,我以爲它都會使用同一來源的設置。你知道我是否可以全局定義DateTime的默認值(在instanciating之前)? – Anonymous

+0

@danontheline:manual說php *應該*使用默認的時區,但實際上在我的PHP 5.2中是不正確的。它可能已經被固定在5.3 – zerkms