2014-10-30 67 views
1

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

我使用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); 
+0

'date_create()'? – 2014-10-30 14:01:06

+0

另外,你实际上并没有在任何地方使用'$ datetime'? – AlpineCoder 2014-10-30 14:02:35

+0

AplineCoder,对不起,这是因为我在发布之前做了一些测试。最后一个查询的正确性是“SELECT TIMEDIFF('”。$ datetime。“','。。$ data。”'“); – user3596108 2014-10-30 14:04:48

回答

0

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

$row2 = mysqli_query($con, "SELECT TIMEDIFF('".$resultado[0]."', '".date_format($data, 'Y-m-d H:i:s)."'"); 
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); 
+0

我试过了,但它显示“致命错误:调用非成员函数的成员函数modify()”。如果我使用date_format并将它传递给一个字符串,它将显示'Catchable致命错误:类DateTime的对象不能转换为字符串'。任何线索? – user3596108 2014-10-30 14:59:32

+0

@ user3596108你能告诉我你是如何试图实例化'DateTime'类的吗?看起来很清楚,该对象由于某种原因未被实例化。 – 2014-10-30 15:01:40