PHP:日期大于当前日期

时间:2011-02-22 18:31:41

标签: php date

我有这段代码:

$curdate = '22-02-2011';

$mydate = '10-10-2011';                     

if($curdate > $mydate)
{
    echo '<span class="status expired">Expired</span>';
}

这将回应过期但不应该因为$ mydate将来,因此小于$ curdate但是PHP正在查看前两个数字22和10而不是整个字符串。我该如何解决这个问题?

由于

7 个答案:

答案 0 :(得分:58)

首先尝试将它们转换为时间戳,然后比较两个转换后的值:

$curdate=strtotime('22-02-2011');
$mydate=strtotime('10-10-2011');

if($curdate > $mydate)
{
    echo '<span class="status expired">Expired</span>';
}

这将它们转换为自1970年1月1日以来的秒数,因此您的比较应该有效。

答案 1 :(得分:6)

问题是你当前的变量是字符串,而不是时间变量。

试试这个:

$curdate = strtotime('22-02-2011');

$mydate = strtotime('10-10-2011');  

答案 2 :(得分:4)

$row_date = strtotime($the_date);
$today = strtotime(date('Y-m-d'));

if($row_date >= $today){
     -----
}

答案 3 :(得分:1)

使用PHP日期/时间类将这些字符串表示转换为可以使用getTimestamp()比较UNIX时间直接比较的内容。

如果您确定所有日期都采用这种格式,您可以将它们串起来切成YYYY-MM-DD,然后字符串比较就能正常运行。

答案 4 :(得分:1)

if(strtotime($curdate) > strtotime($mydate))
{
...
}

答案 5 :(得分:1)

$currentDate = date('Y-m-d');

$currentDate = date('Y-m-d', strtotime($currentDate));

$startDate = date('Y-m-d', strtotime("01/09/2019"));

$endDate = date('Y-m-d', strtotime("01/10/2022"));

if (($currentDate >= $startDate) && ($currentDate <= $endDate)) {

    echo "Current date is between two dates";

} else {

    echo "Current date is not between two dates";  
}

答案 6 :(得分:-3)

非常简单

$curdate = '2011-02-22';
$mydate = '2011-10-10';                     

if($curdate > $mydate)
{
    echo '<span class="status expired">Expired</span>';
}