如何使用数组中的date_diff()查找两个日期之间的差异

时间:2017-08-25 19:01:01

标签: php arrays date datetime

我需要找到数组中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,字符串为

我知道这里有很多关于同一问题的问题,但我找不到适合我的解决方案。所以请帮助我。

2 个答案:

答案 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