如何使用PHP将日期时间与日期时间+ X小时进行比较?

时间:2013-04-15 22:29:17

标签: php date datetime

我有2个日期时间对象。一个是当前的日期时间。另一个是当用户签入时。我想要添加6个小时。

我首先初始化当前的日期时间:

$now=date("Y-m-d H:i:s");

然后我正在使用datediff,但我现在不知道如何添加6小时,我假设我必须使用修改,但我不明白如何使用它。

 $datetimeIn = date_create($result->getDateCheckIn());

   $datetimeOut = date_create($now);
    date_modify($datetimeOut, '+6 hours');
    $interval = date_diff($datetimeIn, $datetimeOut);
    if ($interval->format('%a minute') > 0)
        $UsersToCheckOut[] = $result;

有人可以帮我解决如何将X小时添加到日期时间以将其与另一个相比较吗?

我收到了这个错误: date_create()期望参数1为字符串,对象为date_modify($ datetimeOut,'+ 6 hours');

由于

3 个答案:

答案 0 :(得分:2)

我将尝试回答你的标题和我从你问题正文中提出的问题。

PHP手册非常清楚实际比较日期时间。以下是示例代码:

$date1 = new DateTime("now");
$date2 = new DateTime("+6 hours");

var_dump($date1 == $date2);
var_dump($date1 < $date2);
var_dump($date1 > $date2);

//bool(false)
//bool(true)
//bool(false)

实际添加6小时的部分也是正确的。我复制了你的代码并对其进行了测试,看看我是否能得到与你相同的错误。当我的$ datetimeIn参数不好时,我做了。基于这个以及您发布的错误,它看起来非常像问题在于您的$ datetimeIn参数。我复制了下面的工作代码:

$now=date("Y-m-d H:i:s", strtotime('2013-04-15 04:00:0'));

$datetimeIn = date_create($now);
$datetimeOut = date_create($now);
date_modify($datetimeOut, '+6 hours');
$interval = date_diff($datetimeIn, $datetimeOut);

if ($interval->format('%a minute') > 0) {
    echo "success";     
} else {
    echo "fail";
}

根据错误消息,它正在发生,因为在你的行“$ datetimeOut = date_create($ now);”中,变量$ now现在存在并且是某种对象; date_create()要求第一个参数是某种字符串。请参阅有关有效日期和时间格式的文档here

答案 1 :(得分:1)

您可以获得一份副本,偏移量为6小时,如下所示:

$now    = date_create('now');
$future = date_modify(clone $now, '+ 6 hours');
$diff   = date_diff($now, $future);
var_dump($diff);die;

答案 2 :(得分:0)

$datetimein =  date("m/d/Y H:i:s");
$datetimeout = date("m/d/Y H:i:s", strtotime($datetimein) + 6 * 60 * 60);

看到它正常工作:http://codepad.viper-7.com/6wn8dK