Я пытаюсь определить, будет ли дата в будущем или нет, используя объекты DateTime
но она всегда возвращается положительно:
$opening_date = new DateTime($current_store['openingdate']); $current_date = new DateTime(); $diff = $opening_date->diff($current_date); echo $diff->format('%R'); // + if($diff->format('%R') == '+' && $current_store['openingdate'] != '0000-00-00' && $current_store['openingdate'] !== NULL) { echo '<img id="openingsoon" src="/img/misc/openingsoon.jpg" alt="OPENING SOON" />'; }
Проблема в том, что она всегда положительная, поэтому изображение показывает, когда этого не должно быть.
Должно быть, я делаю что-то глупое, но что это, это сводит меня с ума!
Это проще, чем вы думаете. Вы можете сравнивать с объектами DateTime :
$opening_date = new DateTime($current_store['openingdate']); $current_date = new DateTime(); if ($opening_date > $current_date) { // not open yet! }
Для этого вам не нужен объект DateTime
. Попробуй это:
$now = time(); if(strtotime($current_store['openingdate']) > $now) { // then it is in the future }
Вы можете сравнивать объекты DateTime с обычными операторами сравнения:
$date1 = new DateTime(""); $date2 = new DateTime("tomorrow"); if ($date2 > $date1) { echo '$date2 is in the future!'; }
Для вашего текущего кода попробуйте следующее:
$opening_date = new DateTime($current_store['openingdate']); $current_date = new DateTime(); if ($opening_date > $current_date) { echo '<img id="openingsoon" src="/img/misc/openingsoon.jpg" alt="OPENING SOON" />'; }