2013-11-01 44 views
2

我試圖在之前輸入的日期範圍內爲多個選項卡創建一個ajax日曆。 但對於例如:從一月份起使用+ 1個月後發現strtotime錯誤

我想拿到下個月,它打印的,而不是二月三月

$start= "2013-01-31"; 
$current = date('n', strtotime("+1 month",$start)) //prints 3 

我認爲發生那是因爲2014年2月爲28,並從一開始一個月,但爲什麼加+31像基地?

+0

什麼是「全日」(而不僅僅是個月),當你這樣做?它似乎增加31? – Floris

+4

1月31日+ 1月= 2月31日= 3月3日(或閏年3月2日) –

+3

僅供參考'strtotime'採用unix時間戳作爲第二個參數 - 不是字符串。 – h2ooooooo

回答

6

您正在嘗試將一個月添加到日期2013-01-31。它應該在2013年2月31日發佈,但由於該日期不存在,它將轉到下一個有效月份(即3月)。

您可以使用以下解決方法:

$current = date('n', strtotime("first day of next month",strtotime($start))); 

使用DateTime類:

$date = new DateTime('2013-01-31'); 
$date->modify('first day of next month'); 
echo $date->format('n'); 

這將正確輸出2

Demo!

相關問題