我需要找到数组中2个日期之间的差异。这是数组:
$lists[] = date('Y-m-d', strtotime($user->created_at));
echo $lists[1];
的示例输出为2017-08-01
我试过了
$difftime = $lists[1]->diff($lists[0]);
echo $difftime->format('d');
和echo $lists[1]->diff($lists[0]);
两个都给我错误:
调用字符串
上的成员函数diff()
我也试过echo date_diff($lists[1], $lists[0]);
它给出了错误
date_diff()期望参数1为DateTimeInterface,字符串为
我知道这里有很多关于同一问题的问题,但我找不到适合我的解决方案。所以请帮助我。
答案 0 :(得分:5)
在使用DateTimeInterface::diff()
计算差异之前,您需要首先创建DateTimeInterface
的实例,例如:
$dateOne = \DateTimeImmutable::createFromFormat(
'Y-m-d',
$lists[0]
);
$dateTwo = \DateTimeImmutable::createFromFormat(
'Y-m-d',
$lists[1]
);
$difference = $dateTwo->diff($dateOne);
请注意,$difference
将是DateInterval
的实例 - 如果您需要将差异作为字符串,则需要使用所需格式的$difference->format()
。
供参考,见:
答案 1 :(得分:1)
参考: - diff()
DateTimeInterface 作为参数,它也会仅在 DateTimeInterface 上调用。
如下所示: -
<?php
$lists=array('2017-08-23','2017-08-26');
$datetime1 = new DateTime($lists[0]);
$datetime2 = new DateTime($lists[1]);
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
?>
输出: - https://eval.in/850404