Формирование даты не работает

Я работаю с 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

Я думаю, что $ start, который не работает, - это строка, а $ start, который работает, - это объект DateTime. Я думаю, что date_diff () работает только с объектами DateTime. Попробуйте использовать date_create () в первом примере.

billrichards 22.08.2018 02:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
41
1

Ответы 1

Проблема в том, что date_diff ожидает объект datetime, а не строку даты.

Согласно документации, date_diff - это псевдоним для DateTime::diff().

Использовать:

$start = date_create($TravelYear.'-'.$TravelMonth.'-'.$TravelDate.' '.$TravelHour.':00:00');

Спасибо, Рич. Ваш формат работает. Я действительно пробовал date_create, но это не удалось, возможно, по какой-то другой причине, что привело меня к неправильному пути.

Travel2Learn 22.08.2018 04:05

Другие вопросы по теме