比较日期给出错误的输出

时间:2015-05-12 11:53:24

标签: php date date-comparison

我正在创建一个函数来检查哪个日期在一个充满日期的数据库表中小于当前日期。和过去一样。

我有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 返回较小的

有人可以告诉我出了什么问题吗?

2 个答案:

答案 0 :(得分:7)

你的&#34;约会&#34;真的是字符串。比较它们时,它是按字母顺序排列的。您需要将这些日期转换为真实的日期才能实现此目的:

$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格式也可以。

答案 1 :(得分:2)

你不能比较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>';
}