У меня есть следующий код:
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!
сообщение, что я тут делаю не так?
Вы сравниваете и делаете математику со строками, которые могут быть проблематичными и не дают правильных результатов, особенно когда вы сравниваете их с целыми числами (и не указываете, что на самом деле означает это число). Объекты 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!";
}
Других решений пока нет …