Сравнение дат, дающих неправильные результаты

Я создаю функцию, чтобы проверить, какая дата в таблице базы данных, полной даты, меньше, чем текущая дата. Как и в прошлом.

У меня есть 3 даты, чтобы проверить функцию, и результаты за ними:

Дата с прошлого месяца: 28-04-2015 16:32:00
Дата еще впереди: 11-06-2015 13:12:00
Дата с прошлой недели: 04-05-2015 09:45:00

$dateNow = date('d-m-Y H:i:s'); //Current
$deadlineDate = "28-04-2015 16:33:18";

if($deadlineDate < $dateNow){ //If date from last month is smaller then the current date
echo '<tr class="overdue">'; //Overdue class gives that tr an red background color to mark it
echo '<td>'.$deadlineDate.' is smaller then '.$dateNow.'</td>';
}else{
echo '<tr>';
echo '<td>'.$deadlineDate.' is bigger dan '.$dateNow.'</td>';
}

</tr>

Выходы:

28-04-2015 16:32:00 Возвращает больше
11-06-2015 13:12:00 Возвращает меньше
04-05-2015 09:45:00 Возвращает меньше

Кто-нибудь может сказать мне, что идет не так?

0

Решение

Ваши «свидания» действительно строки. И при сравнении их это по алфавиту. Вам нужно преобразовать эти даты в реальный даты, чтобы это работало:

$dateNow = new DateTime();
$deadlineDate = DateTime::createFromFormat("d-m-Y H:i:s", "28-04-2015 16:33:18");
if($deadlineDate < $dateNow){ //If date from last month is smaller then the current date
echo '<tr class="overdue">'; //Overdue class gives that tr an red background color to mark it
echo '<td>'.$deadlineDate.' is smaller then '.$dateNow.'</td>';
}else{
echo '<tr>';
echo '<td>'.$deadlineDate.' is bigger dan '.$dateNow.'</td>';
}

Преобразование их в формат YYYY-MM-DD также будет работать.

7

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

Вы не можете сравнить date string как это. Преобразуйте это в timestamp первый. использование strtotime,

$dateNow = date('d-m-Y H:i:s'); //Current
$deadlineDate = "28-04-2015 16:33:18";

if(strtotime($deadlineDate) < strtotime($dateNow)){ //If date from last month is smaller then the current date
echo '<tr class="overdue">'; //Overdue class gives that tr an red background color to mark it
echo '<td>'.$deadlineDate.' is smaller then '.$dateNow.'</td>';
}else{
echo '<tr>';
echo '<td>'.$deadlineDate.' is bigger dan '.$dateNow.'</td>';
}
2

По вопросам рекламы [email protected]