[請益] 如何正確取得下一個月的月份

作者: bill0205 (善良的小孩沒人愛)   2018-08-31 10:47:52
因為要做驗證
我需要驗證當月的前後一個月內的年和月
例如現在2018年8月 年月必須介於 2018年7月 到 2018年9月
我是這樣做的
$minMonth = date('Ym',stototime('-1 month'));
$maxMonth = date('Ym',strtotime('+1 month'));
min是沒問題
但是有問題的是$maxMonth
正常情況下可以取得201809
可是剛好今天是2018 8 31
卻取得201810
不知道是不是我對strtotime有點誤解
想請問各位 如何正確取得下個月的月份呢?
作者: JustGame (JustGame)   2018-08-31 11:06:00
真的一定要用 strtotime 的話,應該就是用strtotime('first day of next month')
作者: fantania (shadowdancer)   2018-08-31 12:16:00
沒有9/31 所以會自動變10月
作者: LMGG (聯盟GG)   2018-08-31 12:37:00
前後月份日期如果不同天數,就會出錯
作者: joedenkidd (優質的藍色射手)   2018-08-31 13:21:00
那就取當月最後一天 再加 1 days
作者: shadowjohn (轉角遇到愛)   2018-08-31 13:23:00
取上下月,就抓該15日±30天,不過推 JustGame 的方法
作者: Jerr (身為老爸老媽嚕..)   2018-08-31 14:25:00
推一樓, 以前用strtotime('next month')中雷想破頭, 把strtotime("%F", strtotime('next month'))印出來才罵聲幹更正strftime("%F", ... )
作者: Phedra (Phedra)   2018-08-31 15:39:00
換個方式用 DateTime->diff() 判斷兩個日期的天數差異?請忽略我,誤以為是月份±1的問題
作者: newversion (海納百川)   2018-08-31 16:28:00
建議 先 $Now = time(); 再把 $Now喂給函數
作者: jaywang4 (酒中狂士)   2018-08-31 20:40:00
原來有一樓這招
作者: ddoll288 (風兒卿卿)   2018-09-01 00:26:00
作者: KKFN (John)   2018-09-01 01:16:00
根據PHP的官方說明,strtotime的 month 只是個 dummy,其實等同於 30 days,所以無論你是寫 +/- 1 months 或 +/- 30 days都是相同的。比較推薦的方式還是透過datetime 去取https://goo.gl/L41Qry
作者: akikusa (レオ)   2018-09-01 05:21:00
1F和樓上正解,strtotime的month就是30天,同中雷淚推
作者: KKFN (John)   2018-09-02 01:40:00
還好你們是在 31 天月寫程式XDDDDD 這個雷如果你們在 30 天月寫程式是看不出來的XD
作者: MOONRAKER (㊣牛鶴鰻毛人)   2018-09-03 14:11:00
季節性地雷 噗
作者: ailio (Ailio)   2018-09-05 16:57:00
只有我蠢蠢的抓月份出來 + - 1 然後遇到0跟13再改的嗎 XD
作者: molopo (mmm)   2018-09-20 07:33:00
自己用 carbon 取當月first再next 也踩過這個雷 囧
作者: bill0205 (善良的小孩沒人愛)   2018-10-11 22:00:00
感謝XDD 真的被雷過才知道不能這樣用XDDD

Links booklink

Contact Us: admin [ a t ] ucptt.com