如何计算两个日期之间的过夜?

时间:2016-06-23 16:48:08

标签: php datetime

我知道,如何计算经过的天数:

$d1 = new DateTime('2010-01-01 12:01');
$d2 = new DateTime('2010-01-03 18:22');

$diff = $d2->diff($d1);

echo $diff->format('%d days');

但是如何计算中午的数量呢? 2010-01-01 22:302010-01-02 06:30会产生一个,因为两个日期时间值之间有一个午夜。

1 个答案:

答案 0 :(得分:3)

简单方法:减少时间并保留日期:

$d1 = new DateTime('2010-01-01 12:01')->setTime(0, 0, 0);
$d2 = new DateTime('2010-01-03 18:22')->setTime(0, 0, 0);

$diff = $d2->diff($d1);

这将计算从$d1午夜到$d2午夜的天数,在这种情况下为2010-01-01 00:002010-01-03 00:00