如何查找两天之间的小时数?

时间:2017-03-08 14:11:56

标签: php datetime

所以我有一个包含许多图像的数组,其日期时间格式为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

任何帮助将不胜感激!非常感谢!

1 个答案:

答案 0 :(得分:2)

您所做的是在比较它们之前将值转换为Strings,因此它不再比较两个日期之间的差异,而是比较两个字符串之间的差异。这是你的错误原因。

<强>解决方案:
根据手册

,您传递给date_diff的值必须为two DateTime objects
  

(PHP 5> = 5.3.0,PHP 7)
  DateTime :: diff - DateTimeImmutable :: diff - DateTimeInterface :: diff - date_diff - 返回两个DateTime对象之间的差异

<强>建议:

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