2011-10-06 100 views
1

我有PHP,應該工作了幾行,但不要:DateTime-> DIFF()崩潰

$date1=new DateTime(); 
$date2=new DateTime(); 

$interval=date_diff($date1,$date2); 

$interval=$date1->diff($date2); 

我甚至從DateTime的文檔複製的例子:

$datetime1 = new DateTime('2009-10-11'); 
$datetime2 = new DateTime('2009-10-13'); 
$interval = $datetime1->diff($datetime2); 
echo $interval->format('%R%a days'); 

輸出爲空,當我調試時,調試器在diff線斷開,沒有任何錯誤信息。 PHP Version 5.2.9中是否有任何已知的錯誤,或者是否有其他人看到過這種行爲?

我目前沒有什麼想法,除了更新PHP版本。但更新所有客戶目前不是我想做的事...

每一個小小的幫助...謝謝!

+0

奇怪。這對我來說可以。結果:「+6015天」 – pltvs

+0

你在什麼操作系統上? –

回答

2

DateTime:Diff()僅PHP> = 5.3.0。

不知道爲什麼你的調試器完全釋放 - 它應該是抱怨未申報的方法。也許你需要調整你的錯誤報告設置?

+0

謝謝,那就是...即使有error_reporting(E_STRICT | E_ALL);沒有錯誤顯示。 :-( –

0

看起來很適合我。 您可以試試

date_default_timezone_set('Europe/London'); 
$date1 = new DateTime('2009-10-11'); 
$date2 = new DateTime('2009-10-13'); 

$time1 = $date1->format('Y-m-d'); 
$time2 = $date2->format('Y-m-d'); 

$difference = abs(strtotime($time1)-strtotime($time2)); 

$difference/= 3600*24; 

print $difference.' days'; 
+0

請注意,在32位系統上,基於時間戳的'strtotime()'患有[2038年問題](http://en.wikipedia.org/wiki/Year_2038_problem),而DateTime(使用64內部的位日期)不會混合兩個庫應該只作爲最後的手段(即如果不可能升級到PHP 5.3) –