Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 减去数据_Php_Mysql_Date_Datetime - Fatal编程技术网

Php 减去数据

Php 减去数据,php,mysql,date,datetime,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

我试图在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);

$data
日期时间
,而不是字符串。您需要使用
date\u format()
将其转换为字符串:

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

为什么要查询数据库以获取此信息?使用
DateTime
,您可以完成所有需要的操作

您可以简单地执行以下操作:

$start_time = new DateTime();
$eight_hours_before = $start_time->modify('-8 hours');
或者,您也可以使用
日期间隔

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

如果您的目标是为8小时前创建日期时间,那么可以直接在中完成。大概是这样的:-

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

另外,您实际上没有在任何地方使用
$datetime
?AplineCoder,抱歉,这是因为我在发布此消息之前做了一些测试。最后一个查询的正确答案是“SELECT TIMEDIFF(‘“$datetime.”、‘“$data.”);皇家背景,我在这里看到了这个功能。$datetime和$data都不是字符串,它们都是datetime对象。您需要将它们转换为字符串表示。我尝试过,但它显示“致命错误:对非对象调用成员函数modify()。如果我使用date_格式并将其传递给字符串,它将显示“可捕获的致命错误:DateTime类的对象无法转换为字符串”。有什么线索吗?@user3596108你能告诉我你是如何实例化
DateTime
类的吗?显然,由于某种原因,对象没有实例化。