Я работаю с PHP несколько месяцев и только начал учить себя ajax. Мой первый проект - отправить переменные из формы PHP через jQuery на другой PHP, который служит действием. Я хочу найти разницу между двумя датами и временем и вернуть эхо-ответ многочисленных вычислений обратно на страницу формы PHP. Хорошей новостью является то, что ajax работает так, как ожидалось, и отображает вычисления на странице формы, но только если я использую жестко заданную дату и время ($ start) для начала вычислений. Если я попытаюсь отформатировать дату ($ start) с помощью переменных со страницы формы, ajax ничего не вернет. Если на этот вопрос был дан ответ, направьте меня туда.
$TravelYear = $_POST['TravelYear'];
$TravelMonth = $_POST['TravelMonth'];
$TravelDate = $_POST['TravelDate'];
$TravelHour = $_POST['TravelHour'];
$TimeZone = $_POST['TimeZone'];
date_default_timezone_set($TimeZone);
// this does not work
$start = date('Y-m-d G:i:s',strtotime($TravelYear.'-'.$TravelMonth.'-'.$TravelDate.' '.$TravelHour.":00:00"));
// this works
$start = date_create('2015-07-10 14:30:00');
$end = date_create(); // Current time and date
$diff = date_diff( $start, $end ); // Find the difference
// lots of calculations






Проблема в том, что date_diff ожидает объект datetime, а не строку даты.
Согласно документации, date_diff - это псевдоним для DateTime::diff().
Использовать:
$start = date_create($TravelYear.'-'.$TravelMonth.'-'.$TravelDate.' '.$TravelHour.':00:00');
Спасибо, Рич. Ваш формат работает. Я действительно пробовал date_create, но это не удалось, возможно, по какой-то другой причине, что привело меня к неправильному пути.
Я думаю, что $ start, который не работает, - это строка, а $ start, который работает, - это объект DateTime. Я думаю, что date_diff () работает только с объектами DateTime. Попробуйте использовать date_create () в первом примере.