可能重複:
PHP DateTime::modify adding and subtracting months如何增加1個月的日期沒有跳過即二月
我有一個起始日期(即2011-01-30),並要添加1個月。
問題在於定義一個月的情況。所以,如果我使用下面的代碼:
$d1 = DateTime::createFromFormat('Y-m-d H:i:s', '2011-01-30 15:57:57');
$d1->add(new DateInterval('P1M'));
echo $d1->format('Y-m-d H:i:s');
我得到以下結果:2011-03-02 15點57分57秒
的問題是,我需要它使用下列規則:
- 如果我添加1個月,將剛上月部分加1,保留日部分 (2011-01-15會變成2011-02-15)
- 如果當天沒有在現有的一個月我們會結束,我們把它的最後一天 (2011-01-30將成爲2011-02-28)
在php中是否有一個常見的功能可以做到這一點,或者我必須自己編寫它? 也許我只是缺少一個參數或什麼!?
如果你迭代了多個月,你需要小心你不會在28日被「卡住」。例如,如果你開始於1/30 .. 2/28 .. 3/28,那麼你可能想要3/30。 – Matthew
我最近處理這個實現商業計費系統。沒有預先解決的解決方案。您必須跟蹤您的開始日期,遞增月份,查看下一個月是否存在該日期,如果沒有,請使用該月份的最後一天。實際上它並不複雜,但它會覺得你不應該編寫那麼多的代碼。 – Endophage
這裏的要求是添加*日曆月*。跳到本月的第一天,添加你想要的月份,然後跳回到你開始的日期編號*或*如果月份短於開始日期編號,則新月份的最後一天。 – Jason