2017-08-25 133 views
1

我需要查找数组中两个日期之间的差异。这里是阵列:如何使用数组中的date_diff()查找两个日期之间的差异

$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]);

两个给我错误:

Call to a member function diff() on string

我也曾尝试echo date_diff($lists[1], $lists[0]);

它给错误

date_diff() expects parameter 1 to be DateTimeInterface, string given

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

回答

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

+0

它的工作原理... !!! :) – Ahsan

+0

@Ahsan很高兴帮助你:) :) –

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()

仅供参考,请参阅:

+2

我不知道谁在低估你或者为什么,因为你是更完整的答案。 – Sammitch

+0

谢谢@Sammitch,我很感激! – localheinz

+0

嗨,我没有得到错误,但结果是意外的。 $ list [0]日期为2017-07-20,$ lists [1]为2017-08-01。所以结果应该是10天,但我得到了19.我最后添加了这个:$ difftime = $ difference-> format('d'); echo $ difftime; 输出是19.我错过了什么? – Ahsan