Я сейчас использую PHP ROUND
, ABS
, STRTOTIME
рассчитать разницу между двумя датами.
Расчет работает, пока вы не выберете $_SESSION['b_checkout']
с нового года. т.е. если b_checkin
30 декабря и b_checkout
это 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 дня. В чем проблема?
Удалите все запятые и посмотрите, как это работает!
$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 дня в результате.
Используйте ниже формат для регистрации и проверки
// 'F jS Y'
$_SESSION['b_checkin'] = "31 December, 2014";
$_SESSION['b_checkout'] = "1 January, 2015";
Надеюсь это поможет 😉
Ура !!!