2014-02-06 91 views
2

我面臨的一個奇怪的問題與提前一個月遞增日期爲以下情況 對於日期輸入作爲2014-01-31我越來越2014-03-03而它應該「2014年2月28日」錯誤而遞增日期1個月

我我正在使用以下代碼

$time = strtotime("2014-01-31"); 
$final = date("Y-m-d", strtotime("+1 month", $time)); 
+0

另外還有一個問題的答案我張貼在幾個月前一個非常類似的問題 - http://stackoverflow.com/a/19719945/368896 –

+1

因爲在二月份他們是28天,所以它會跳到下個月,即3月3日。 –

回答

3

在1月30日或31日使用它時,php中的+1月份具有意想不到的行爲。你會在三月份得到一個約會。這是因爲php在線提高了月份數量(因此2014-01-31將會變爲2014-02-31。這不存在,所以php會將此更正爲2012-02-28 + 3.

This將讓你在正確的結果在月底

$d = new DateTime('2014-01-31'); 
$d->modify('last day of +1 month'); 
$final = $d->format('Y-m-d'); 

這是在PHP手冊中的解釋:http://php.net/manual/en/function.strtotime.php#107331