>> $start_dt = new DateTime()
DateTime::__set_state(array(
'date' => '2012-04-11 08:34:01',
'timezone_type' => 3,
'timezone' => 'America/Los_Angeles',
))
>> $end_dt = new DateTime()
DateTime::__set_state(array(
'date' => '2012-04-11 08:34:06',
'timezone_type' => 3,
'timezone' => 'America/Los_Angeles',
))
>> $start_dt->setTimestamp(strtotime('31-Jan-2012'))
DateTime::__set_state(array(
'date' => '2012-01-31 00:00:00',
'timezone_type' => 3,
'timezone' => 'America/Los_Angeles',
))
>> $end_dt->setTimestamp(strtotime('1-Mar-2012'))
DateTime::__set_state(array(
'date' => '2012-03-01 00:00:00',
'timezone_type' => 3,
'timezone' => 'America/Los_Angeles',
))
>> $interval = $start_dt->diff($end_dt)
DateInterval::__set_state(array(
'y' => 0,
'm' => 0,
'd' => 30,
'h' => 0,
'i' => 0,
's' => 0,
'invert' => 0,
'days' => 30,
))
>> $interval->format('%mm %dd')
'0m 30d'
即31-Jan-2012
到1-Mar-2012
產量不到一個月!我期望輸出爲1個月,1天。二月份的天數應該不重要;這就是使用時間庫的一點 - 它應該處理這些事情。。這是PHP的DateTime中的錯誤:diff?
我應該向PHP提交一個錯誤嗎?有沒有一個黑客/修復/解決方法,讓月份按預期工作?
+1,因爲這是正確的答案 - 過去我曾經遇到過這種行爲,並且由於低於恆星的文檔沒有發現這個問題。感謝光照。 :) – Jon 2012-04-11 16:01:04