比较PHP中的日期

daz*_*nto 1 php symfony1

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

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

$recordDate = $slideshow->getDateTimeObject('updated_at');
$nowDate = new DateTime();
var_dump($showDate < $nowDate);
Run Code Online (Sandbox Code Playgroud)

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

Pas*_*TIN 7

要知道$ 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)

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