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