У меня есть этот код:
$curdate = '22-02-2011'; $mydate = '10-10-2011'; if($curdate > $mydate) { echo '<span class="status expired">Expired</span>'; }
Это будет истекать echo, но не должно, потому что $ mydate в будущем и, следовательно, меньше, чем $ curdate, но PHP ищет JUST первые два номера 22 и 10 вместо целой строки. Как я могу это исправить?
благодаря
Попробуйте сначала преобразовать их в метки времени, а затем сравнить два преобразованных значения:
$curdate=strtotime('22-02-2011'); $mydate=strtotime('10-10-2011'); if($curdate > $mydate) { echo '<span class="status expired">Expired</span>'; }
Это преобразует их в число секунд с 1 января 1970 года, поэтому ваше сравнение должно работать.
Проблема в том, что ваши текущие переменные являются строками, а не переменными времени.
Попробуйте это:
$curdate = strtotime('22-02-2011'); $mydate = strtotime('10-10-2011');
$row_date = strtotime($the_date); $today = strtotime(date('Ym-d')); if($row_date >= $today){ ----- }
Используйте классы даты и времени PHP, чтобы преобразовать эти представления строк во что-то, что вы можете напрямую сравнить с помощью getTimestamp (), чтобы сравнить время UNIX.
Если вы уверены, что все ваши даты находятся в этом формате, вы можете вырезать их в YYYY-MM-DD, и сравнение строк будет корректно работать.
if(strtotime($curdate) > strtotime($mydate)) { ... }
это ОЧЕНЬ просто
$curdate = '2011-02-22'; $mydate = '2011-10-10'; if($curdate > $mydate) { echo '<span class="status expired">Expired</span>'; }