0

我有 2 个日期时间对象。一是当前日期时间。另一个是用户签到时。我想增加 6 个小时。

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

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

然后我使用 datediff 但我现在不知道如何添加 6 小时,我想我必须使用 modify,但我不明白如何使用它。

 $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'); 行中给出

谢谢

4

3 回答 3

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() 要求第一个参数是某种字符串。在此处查看有关有效日期和时间格式的文档

于 2013-04-15T22:45:35.453 回答
1

你可以得到一个副本,偏移量为 6 小时,如下所示:

$now    = date_create('now');
$future = date_modify(clone $now, '+ 6 hours');
$diff   = date_diff($now, $future);
var_dump($diff);die;
于 2013-04-15T22:48:06.940 回答
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

于 2013-04-15T22:52:31.200 回答