2010-10-14 35 views
1

我已經在StackOverflow中看到了關於如何計算兩個日期之間的時間差異的一些答案。但是沒有答案在PHP中使用DateTime obejct或Interval Object。我從PHP手冊網站獲得了以下代碼片段:http://www.php.net/manual/en/dateinterval.format.php使用PHP間隔對象計算天差異?

<?php 

$january = new DateTime('2010-01-01'); 
$february = new DateTime('2010-02-01'); 
$interval = $february->diff($january); 

// %a will output the total number of days. 
echo $interval->format('%a total days')."\n"; 

// While %d will only output the number of days not already covered by the 
// month. 
echo $interval->format('%m month, %d days'); 

?> 

但問題是,總天數等於6015天,應該只有31天。我試圖訪問Interval對象中的實例變量days。它也顯示6015天。但月份和日期間隔的情況是正確的。有人能告訴我爲什麼嗎?

而我想用這些對象來計算時間的差異!

非常感謝

UPDATE:

我覺得這只是我的PHP設置有問題

+0

這是與Windows上的PHP相關的問題。 http://stackoverflow.com/questions/2519261/how-to-get-aggregate-days-from-phps-datetimediff – 2011-01-12 20:34:48

回答

0

運行代碼...

31 total days 
1 month, 0 days 

PHP安裝問題,也許?

0

我跑了完全一樣的腳本,並得到了「31總天數」和「1個月,0天「(期望值)。嘗試升級你的php也許吧?..

0

我不確定你使用的是什麼版本的PHP,但在我的經驗中,我已經習慣於總是將我的時區設置爲date_default_timezone_set('America/Los_Angeles');,其中America/Los_Angeles是時區你想要使用。我不知道這是如何最終影響日期計算的,但我確實知道如果您嘗試在沒有指定默認時區的情況下進行日期操作,PHP 5.3會對您大吼一聲。

我相信你也可以在你的php.ini中設置一個默認時區,我認爲默認時區設置爲UTC。