我正在尝试在PHP中创建一个脚本,用于查找记录的更新时间(来自symfony作为日期时间对象)是否距离现在的时间不到一个小时,换句话说,如果记录在最后一小时
这是我到目前为止的代码:
$recordDate = $slideshow->getDateTimeObject('updated_at');
$nowDate = new DateTime();
var_dump($showDate < $nowDate);
但是,这仅显示更新时间是否在此之前
答案 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
}