2012-07-26 448 views
1

我有一個函數來計算兩個日期之間的差異。日期差異在php

function getDateDifference($to, $from, $in) { 
$diff = abs($to - $from); 

$years = floor($diff/(365 * 60 * 60 * 24)); 
$months = floor(($diff - $years * 365 * 60 * 60 * 24)/(30 * 60 * 60 * 24)); 
$days = floor(($diff - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 * 24)/(60 * 60 * 24)); 
if ($in == "days") { 
    return $days; 
} else if ($in == "months") { 
    return $months; 
} else if ($in == "years") { 
    return $years; 
} 

}

有關參數我第一次兩個日期轉換成秒這樣,

checkin = '2012-07-26'; 
checkout = '2012-07-27'; 
check_in_date = strtotime(checkin); 
check_out_date = strtotime(checkout); 

即時得到正確的區別,當談到差不到一個月。但是,如果差異超過一個月,我總是把差異作爲1.有人能告訴我問題是。

+1

有很多你選中此http://stackoverflow.com/questions/676824/how-to-calculate-the-difference-between-two-dates-using-php – 2012-07-26 10:04:21

回答

2

目前,一個月總是30 * 60 * 60 * 24秒,又名30天。

你的問題是我們在七月,有31天,而不是30.你必須照顧每月的天數。

+0

謝謝! !這是問題.. – era 2012-07-26 10:27:30

1

您可以使用DateTime類。 http://php.net/manual/en/datetime.diff.php

$checkin = new DateTime("2012-07-23"); 
$checkout = new DateTime("2012-07-27"); 
$difference = $checkin->diff($checkout); 
echo "differrence = " . $difference->format('%R%a days'); 
+0

注意:需要PHP 5.3 – zessx 2012-07-26 10:20:42