PHP strtotime возвращает целый год вместо одного дня

Я сейчас использую 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 дня. В чем проблема?

0

Решение

Удалите все запятые и посмотрите, как это работает!

$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 дня в результате.

1

Другие решения

Используйте ниже формат для регистрации и проверки

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

Надеюсь это поможет 😉

Ура !!!

0

По вопросам рекламы [email protected]