2016-06-23 75 views
2

我知道,怎麼可能來計算的經過天數:如何計算兩個日期之間的過夜?

$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

但有在2010-01-01 12:01'和'2010-01-03 18:22'之間的2個夜間,這是你得到的答案;那麼究竟是什麼問題呢? –

+0

但是,如果我更改爲'2010-01-01 23:01'和'2010-01-03 06:00',則不會 –

回答

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

相關問題