2014-11-05 24 views
0

我目前使用PHP ROUND,ABS,STRTOTIME來計算兩個日期之間的差異。PHP strtotime全年而不是一天返回

計算將一直運行,直到您從新的一年中選擇$_SESSION['b_checkout']。即如果b_checkin是Dec 30而b_checkout是Dec 31,則這返回正確的$no_nights爲1天。

$_SESSION['b_checkin']$_SESSION['b_checkout']正在使用'D F jS Y'日期格式。例如

$_SESSION['b_checkin'] = "Wednesday, 31 December, 2014" 
$_SESSION['b_checkout'] = "Thursday, 1 January, 2015" 

$no_nights = round(abs(strtotime($_SESSION['b_checkout']) - strtotime($_SESSION['b_checkin']))/(60*60*24)); 

目前這個輸出(echo $no_nights)363天,而不是1天。問題是什麼?

+0

您的日期不適用於'strtotime' - >'strtotime(string $ time)time日期/時間字符串。有效格式在[日期和時間格式](http://php.net/manual/en/datetime.formats.date.php)中說明' – Sean 2014-11-05 04:39:51

回答

1

刪除所有的逗號,並看到它的作品!

$b_checkin = "Wednesday 31 December 2014"; 
$b_checkout = "Thursday 1 January 2015"; 

$no_nights = round(abs(strtotime($b_checkout) - strtotime($b_checkin))/(60*60*24)); 
echo $no_nights; 

當php無法正確解釋年份時,它使用當前年份進行解析。那就是你如何得到363天的結果。

+0

如下所示使用str_replace並且工作:$ _SESSION ['b_checkin'] = str_replace(',','',$ _SESSION ['b_checkin']); $ _SESSION ['b_checkout'] = str_replace(',','',$ _SESSION ['b_checkout']); – Accolade 2014-11-05 04:44:59

0

使用以下格式簽入和籤

// 'F jS Y' 
$_SESSION['b_checkin'] = "31 December, 2014"; 
$_SESSION['b_checkout'] = "1 January, 2015"; 

希望這有助於;)

乾杯!