1

关于 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';
}

我确定它很简单,但由于某种原因我无法解决它。

4

2 回答 2

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';
}
于 2012-09-13T17:41:18.647 回答
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 的回答 - 这是解决您问题的更好方法。

于 2012-09-13T17:44:13.293 回答