减去数据php

时间:2014-10-30 13:59:07

标签: php mysql date datetime

我试图在PHP上减去另一个日期,创建一个8小时(08:00:00)的新日期并从之前的结果中减去它。

我使用TIMEDIFF减去前两个日期,然后使用DateTime将其转换为日期格式。

然后我使用date_create创建8小时日期,以便从前一个结果中减去。

问题在于,当我使用TIMEDIFF进行最后一次计算时,它会返回以下消息:

 Catchable fatal error: Object of class DateTime could not be converted to string in /Users/renatoaraujo/Documents/wlib compartilhada/wlib/ponto/index.php on line 50

我在哪里错过了?

这是我的代码:

        $row = mysqli_query($con, "SELECT TIMEDIFF('".$ponto[0]."','".$ponto[1]."')");
        $resultado = mysqli_fetch_array($row);

        $datetime = new DateTime($resultado[0]);
        $data = date_create('08:00:00');

        $row2 = mysqli_query($con, "SELECT TIMEDIFF('".$resultado[0]."', '".$data."'");
        $saldo_total = mysqli_fetch_array($row2);

3 个答案:

答案 0 :(得分:2)

为什么要查询数据库呢?您可以使用DateTime完成所需的一切。

你可以这样做:

$start_time = new DateTime();
$eight_hours_before = $start_time->modify('-8 hours');

或者您可以使用DateInterval

$start_time = new DateTime();
$eight_hours = new DateInterval('P8H');
$start_time->sub($eight_hours);

答案 1 :(得分:0)

$dataDateTime,不是字符串。您需要使用date_format()将其转换为字符串:

$row2 = mysqli_query($con, "SELECT TIMEDIFF('".$resultado[0]."', '".date_format($data, 'Y-m-d H:i:s)."'");

答案 2 :(得分:0)

如果你的目标是在8小时前创建一个DateTime,那么可以直接在\DateTime constructor中完成。这样的事情: -

$eightHoursAgo = new \DateTime('- 8 hours');

See it working