我对php date()函数有一些奇怪的结果。基本上我从一个字符串格式的Mysql数据库中获取日期,分成三个元素。这将是日,月,年(例如2012年9月15日)我最终比较两个日期,看它是否已过期。但问题是只有某些日期允许代码工作,而有些日期根本不起作用(或允许if语句有效工作)下面是我的代码,任何帮助都会很棒。
$today = date("d-m-Y");
$expire = date("d-m-Y",strtotime($this->getData('date_day')."-".
$this->getData('date_month')."-".$this->getData('date_year'))) ;
if ($expire < $today)
{
echo 'expired';
}
else
{
echo 'Not expired';
}
我确定它很简单,但出于某种原因我无法解决它。
答案 0 :(得分:5)
您需要比较Unix时间戳。
$today = time();
$expire = strtotime($this->getData('date_day')."-".
$this->getData('date_month')."-".$this->getData('date_year')) ;
if ($expire > $today)
{
echo 'expired';
}
else
{
echo 'Not expired';
}
答案 1 :(得分:0)
看起来strtotime
预计是美国日期格式;您需要交换月份和日期来生成有效日期:
$today = date("d-m-Y");
$expire = date("d-m-Y",strtotime($this->getData('date_month')."-".
$this->getData('date_day')."-".$this->getData('date_year'))) ;
另一方面,请参阅Stephen305的答案 - 这是解决问题的更好方法。