2017-03-08 83 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

相关问题