2017-03-08 84 views
-1

所以我有一個在它的日期時間格式爲Y-m-d H:i:s其中的許多圖像數組而且我希望找到圖像的日期和當前日期之間的天數。這是我到現在爲止的地方......並且我爲每一個小改變都會遇到新的錯誤。如何查找兩天之間的小時數?

$myDateTime = DateTime::createFromFormat('Y-m-d H:i:s', $current_time); 
$currentDate = $myDateTime->format('Y-m-d'); 

foreach($all_images as $key => $am){ 

     $myDateTime1 = DateTime::createFromFormat('Y-m-d H:i:s', $am['datetime']); 
     $imageDate = $myDateTime1->format('Y-m-d'); 

     $datediff=date_diff($currentDate,$imageDate); 
     echo $datediff; 
} 

我得到這個錯誤: Warning: date_diff() expects parameter 1 to be DateTimeInterface, string given

任何幫助,將不勝感激!非常感謝!

+0

通常,如果您處理日期計算,最簡單的方法是將兩個日期轉換爲秒以來的時間,然後對它們進行比較。 – neuhaus

+0

或者你可以減去你的兩個時間戳,並將結果除以3600. – Jerodev

+0

@Jerodev我做到了,但後來我得到零 – meagler

回答

2

你所做的是你在比較之前將你的值轉換爲Strings,所以它不再比較兩個日期之間的差異,而是兩個字符串之間的差異。這是你的錯誤原因。

解決方案:
傳遞給date_diff的值需要two DateTime objects爲每手冊:

(PHP 5 >= 5.3.0, PHP 7)
DateTime::diff -- DateTimeImmutable::diff -- DateTimeInterface::diff -- date_diff — Returns the difference between two DateTime objects

建議:

foreach($all_images as $key => $am){ 

     $myDateTime1 = DateTime::createFromFormat('Y-m-d H:i:s', $am['datetime']); 
     $imageDate = $myDateTime1->format('Y-m-d'); 

     $datediff=date_diff($myDateTime, $myDateTime1); 
     echo $datediff->format('%R%a days'); // +2 days 
} 

注意上面date_diff函數需要Objects不是strings

這現在將使用date_diff [程序上在該示例]以輸出差值$datediff您可以與DateTime formatting使用達到的天/小時數/不管。請Read the manual

+0

非常感謝!有效!發現我的錯誤! – meagler

+0

好好!如果你只是使用對象而不是固定它的' - >格式化版本,我會採用它嗎? – Martin

+0

是的!再次感謝男子:D – meagler

相關問題