我有一個奇怪的問題,我從來沒有遇到過使用它們的strtotime()函數之前的PHP。需要關於PHP strtotime()計算錯誤的建議
$original = strtotime('2015-12-31 12:34:56');
$time = strtotime('+ 2 month', $original);
echo date('m/d/y H:i:s', $original),'<br>',date('m/d/y H:i:s', $time);
我希望得到的輸出什麼:
12/31/15 12:34:56
02/29/16 12:34:56
我實際得到的輸出:
12/31/15 12:34:56
03/02/16 12:34:56
我如何解釋這個計算錯誤?經過相當多的調查後,我意識到PHP使用平均30.5天來做這樣的計算。我並不真正關心這種情況發生的原因,而是我能做些什麼來解釋它。我有一些想法,涉及編寫strtotime()時涉及月計算包裝,但它似乎是一個複雜的方法...
有一個現有的答案this question但時間部分沒有提到的問題(只有一個日期),因此我不認爲這個問題是該問題的重複。此外,我主要是在尋求改進我們處理這個問題的方式,而不一定是針對上述問題發佈的解決方案。但是,如果我做錯了,那麼歡迎您刪除這個問題:(
因爲一個月不是一個固定的長度...... PHP不會給你「兩個月後的月份的最後一天」,它需要一個任意月份的長度,在大多數情況下(但不是全部)情況下....如果你想要的話,在本月的第一天增加2個月,然後請求該月的最後一個日期 –