2012-12-05 27 views
1

我正在開發用戶每月支付的訂閱服務。PHP DateInterval:兩個不同月份中的同一日期之間的差異不是一個月

我有兩個日期

1:(今$)2012-12-05

2:2013年1月5日($ END_DATE)

對我來說,爲一個月。但對於PHP來說,這隻有30天。

下面是一些代碼(你可以看到上面的映射中的日期值)

$end_date_for_new_agents = clone $end_date; 
$end_date_for_new_agents = $end_date_for_new_agents->add(new DateInterval("P1D")); 
$agent_period_months_obj = $today->diff($end_date_for_new_agents); 
echo $agent_period_months_obj->format("%y-%m-%d") 

這回聲0-0-30

這是爲什麼,我怎樣才能使PHP計算差值在不同月份的相同日期與整個月份之間?

回答

2

你應該也是時間,或者一天不能完成。

例如:

date_default_timezone_set("Europe/Rome"); 
$end='2013-01-05'; 
$intervalo = date_diff(date_create(), date_create($end)); 
echo $intervalo->format("Years:%Y,Months:%M,Days:%d,Hours:%H,Minutes:%i,Seconds:%s"); 

得到作爲結果:

Years:00,Months:00,Days:30,Hours:05,Minutes:59,Seconds:53 

以下代碼

date_default_timezone_set("Europe/Rome"); 
$start='2012-12-05'; 
$end='2013-01-05'; 
$intervalo = date_diff(date_create($start), date_create($end)); 
echo $intervalo->format("Years:%Y,Months:%M,Days:%d,Hours:%H,Minutes:%i,Seconds:%s"); 

得到的結果:

Years:00,Months:01,Days:0,Hours:00,Minutes:0,Seconds:0 

檢查$today的值是否也有時間,如果是的話應該只提取日期而忘記時間

+0

啊,當然了。謝謝! – Nicsoft

相關問題