Почему я не могу успешно вычесть два значения даты и времени в php?

У меня есть следующий код:

echo "first row " . $firstRow["begin_date"];
echo " super beg " . $superbegintime;
echo " duration " . $duration;
if(($firstRow["begin_date"] - $superbegintime) >= $duration)
{
echo "it works!";
}

$firstRow["begin_date"] это DATETIME поле типа взято из базы данных

$superbegintime создается следующим образом:

$date = new DateTime();
$superbegintime= $date->add(DateInterval::createFromDateString('10 minutes'))->format('Y-m-d H:i:s');

а также $duration это поле $duration = 15; это должно представлять количество секунд.

Я не могу ввести оператор if и распечатать it works! сообщение, что я тут делаю не так?

3

Решение

Вы сравниваете и делаете математику со строками, которые могут быть проблематичными и не дают правильных результатов, особенно когда вы сравниваете их с целыми числами (и не указываете, что на самом деле означает это число). Объекты DateTime позволяют вам сделать математику, а затем сравнить разницу с продолжительностью. Разница и продолжительность являются объектами DateInterval, которые сравнимы.

$beginDate      = new DateTime($firstRow["begin_date"]);
$superbegintime = new DateTime($superbegintime);
$duration       = DateInterval::createFromDateString('15 seconds');
$diff = $beginDate->diff($superbegintime);

if($diff >= $duration)
{
echo "it works!";
}

демонстрация

3

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector