我知道,如何计算经过的天数:
$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:30
和2010-01-02 06:30
会产生一个,因为两个日期时间值之间有一个午夜。
答案 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:00
到2010-01-03 00:00