I'm creating a function to check which date, in a database table full of date's, is smaller then then current date. As in the past.
I've got 3 date's to test the function with, and the outputs behind them:
Date from last month: 28-04-2015 16:32:00
Date yet to come: 11-06-2015 13:12:00
Date from last week: 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>
Outputs:
28-04-2015 16:32:00 Returns bigger
11-06-2015 13:12:00 Returns smaller
04-05-2015 09:45:00 Returns smaller
Can anybody tell me what is going wrong?
Your "dates" are really strings. And when comparing them it is alphabetical. You need to convert those dates to real dates for this to work:
$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>';
}
Converting them into YYYY-MM-DD format will also work.