PHP:日期不是当前日期

问题描述:

大我有这样的代码:PHP:日期不是当前日期

$curdate = '22-02-2011'; 

$mydate = '10-10-2011';      

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

这将回声过期,但不应该因为$指明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>'; 
} 

这将它们转换成秒数自1970年1月1日,所以你的比较应该工作。

+0

谢谢:)伟大的作品。 – Cameron 2011-02-22 18:42:52

+3

@Cameron你不觉得它有点过分,以错误的格式定义变量,然后将其转换为另一个?为什么不以适当的格式来定义它? – 2011-02-22 19:07:37

+0

如果我想知道当前日期少于1个月,那么使用mydate如何?怎么做? – Eli 2016-07-01 15:18:22

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

尝试了这一点:

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

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

使用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>'; 
} 

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

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