2014-10-30 97 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