我试图在PHP中创建一个脚本来查找记录的更新时间(来自symfony作为日期时间对象)是否距离现在的时间不到一个小时,换句话说,如果记录在过去一小时内更新
这是我到目前为止的代码:
$recordDate = $slideshow->getDateTimeObject('updated_at');
$nowDate = new DateTime();
var_dump($showDate < $nowDate);
Run Code Online (Sandbox Code Playgroud)
但是,这仅显示更新时间是否在此之前
要知道$ recordDate是否比一小时前更新,而不是将其与当前日期进行比较,您需要将它与我们之前的DateTime进行比较.
你会想要这样的东西:
if ($recordDate >= $oneHourAgo) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
如果您使用PHP> = 5.3,则可以使用该DateTime::sub方法将一小时减去$nowDateDateTime.
例如,首先获取当前日期:
$oneHourAgo = new DateTime();
var_dump($oneHourAgo);
Run Code Online (Sandbox Code Playgroud)
然后,减去一小时:
$oneHourAgo->sub(DateInterval::createFromDateString('1 hour'));
var_dump($oneHourAgo);
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
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)
Run Code Online (Sandbox Code Playgroud)
如果使用PHP 5.2,则需要使用DateTime::modify.
在这里,首先,创建当前日期:
$oneHourAgo = new DateTime();
var_dump($oneHourAgo);
Run Code Online (Sandbox Code Playgroud)
然后,修改它:
$oneHourAgo->modify('-1 hour');
var_dump($oneHourAgo);
Run Code Online (Sandbox Code Playgroud)
当然,这将获得与第一种解决方案完全相同的输出;-)