2011-02-25 116 views
1

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

这里被更新的代码我到目前为止:

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

然而,这只能说明如果更新的时间是以前,现在

回答

1

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

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

要知道,如果$ recordDate比近期更一小时前,而不是将它与当前日期进行比较,您需要比较我与DateTime相对应的一个我们以前的。

你会想是这样的:

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


如果你使用PHP> = 5.3,您可以使用DateTime::sub方法,一小时到。减去你的$nowDate日期时间。

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

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

,然后,。减去1小时:

$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); 

当然,这将让你完全一样类型的输出作为第一个解决方案;-)

+0

我想你会想''修改'不管怎么样,否则你必须先创建一个额外的'DateInterval'对象。 – Powerlord 2011-02-25 20:00:31

+0

@R我编辑了我的答案,提供了几个示例,显示:-) – 2011-02-25 20:04:45