看板 PHP 關於我們 聯絡資訊
因為要做驗證 我需要驗證當月的前後一個月內的年和月 例如現在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有點誤解 想請問各位 如何正確取得下個月的月份呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.137.123.166 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1535683675.A.2C8.html
JustGame: 真的一定要用 strtotime 的話,應該就是用 08/31 11:06
JustGame: strtotime('first day of next month') 08/31 11:06
fantania: 沒有9/31 所以會自動變10月 08/31 12:16
LMGG: 前後月份日期如果不同天數,就會出錯 08/31 12:37
joedenkidd: 那就取當月最後一天 再加 1 days 08/31 13:21
shadowjohn: 取上下月,就抓該15日±30天,不過推 JustGame 的方法 08/31 13:23
Jerr: 推一樓, 以前用strtotime('next month')中雷想破頭, 把 08/31 14:25
Jerr: strtotime("%F", strtotime('next month'))印出來才罵聲幹 08/31 14:26
Jerr: 更正strftime("%F", ... ) 08/31 14:28
Phedra: 換個方式用 DateTime->diff() 判斷兩個日期的天數差異? 08/31 15:39
Phedra: 請忽略我,誤以為是月份±1的問題 08/31 15:42
newversion: 建議 先 $Now = time(); 再把 $Now喂給函數 08/31 16:28
jaywang4: 原來有一樓這招 08/31 20:40
ddoll288: https://goo.gl/NQ8p8M 09/01 00:26
KKFN: 根據PHP的官方說明,strtotime的 month 只是個 dummy,其實 09/01 01:16
KKFN: 等同於 30 days,所以無論你是寫 +/- 1 months 或 +/- 30 da 09/01 01:16
KKFN: ys都是相同的。比較推薦的方式還是透過datetime 去取 09/01 01:16
KKFN: https://goo.gl/L41Qry 09/01 01:18
akikusa: 1F和樓上正解,strtotime的month就是30天,同中雷淚推 09/01 05:21
KKFN: 還好你們是在 31 天月寫程式XDDDDD 這個雷如果你們在 30 天 09/02 01:40
KKFN: 月寫程式是看不出來的XD 09/02 01:40
MOONRAKER: 季節性地雷 噗 09/03 14:11
ailio: 只有我蠢蠢的抓月份出來 + - 1 然後遇到0跟13再改的嗎 XD 09/05 16:57
molopo: 自己用 carbon 取當月first再next 也踩過這個雷 囧 09/20 07:33
bill0205: 感謝XDD 真的被雷過才知道不能這樣用XDDD 10/11 22:00