我有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');
由于
答案 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);