比较PHP中的日期

时间:2011-02-25 19:52:30

标签: php symfony1

我正在尝试在PHP中创建一个脚本,用于查找记录的更新时间(来自symfony作为日期时间对象)是否距离现在的时间不到一个小时,换句话说,如果记录在最后一小时

这是我到目前为止的代码:

$recordDate = $slideshow->getDateTimeObject('updated_at');
$nowDate = new DateTime();
var_dump($showDate < $nowDate);

但是,这仅显示更新时间是否在此之前

2 个答案:

答案 0 :(得分:7)

要知道$ recordDate是否比一小时前更新,而不是将其与当前日期进行比较,您需要将它与我们之前的DateTime进行比较。

你会想要这样的东西:

if ($recordDate >= $oneHourAgo) {
    // do something
}


如果您使用 PHP&gt; = 5.3 ,则可以使用DateTime::sub方法将一小时减去$nowDate日期时间。

例如,首先获取当前日期:

$oneHourAgo = new DateTime();
var_dump($oneHourAgo);

然后,减去一小时:

$oneHourAgo->sub(DateInterval::createFromDateString('1 hour'));
var_dump($oneHourAgo);

这是我得到的输出:

object(DateTime)[1]
  public 'date' => string '2011-02-25 21:03:32' (length=19)
  public 'timezone_type' => int 3
  public 'timezone' => string 'Europe/Paris' (length=12)

object(DateTime)[1]
  public 'date' => string '2011-02-25 20:03:32' (length=19)
  public 'timezone_type' => int 3
  public 'timezone' => string 'Europe/Paris' (length=12)


如果使用 PHP 5.2 ,则需要使用DateTime::modify

在这里,首先,创建当前日期:

$oneHourAgo = new DateTime();
var_dump($oneHourAgo);

然后,修改它:

$oneHourAgo->modify('-1 hour');
var_dump($oneHourAgo);

当然,这将使您获得与第一种解决方案完全相同的输出; - )

答案 1 :(得分:1)

我放弃创建另一个DateTime对象并使用DateTime :: getTimestamp()和strtotime()

if($recordDate->getTimestamp() >= strtotime("-1 hour")) {
    //do stuff
}