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

看板PHP作者 (ZzZz)時間6年前 (2018/08/31 10:47), 編輯推噓9(9016)
留言25則, 16人參與, 6年前最新討論串1/1
因為要做驗證 我需要驗證當月的前後一個月內的年和月 例如現在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

08/31 11:06, 6年前 , 1F
真的一定要用 strtotime 的話,應該就是用
08/31 11:06, 1F

08/31 11:06, 6年前 , 2F
strtotime('first day of next month')
08/31 11:06, 2F

08/31 12:16, 6年前 , 3F
沒有9/31 所以會自動變10月
08/31 12:16, 3F

08/31 12:37, 6年前 , 4F
前後月份日期如果不同天數,就會出錯
08/31 12:37, 4F

08/31 13:21, 6年前 , 5F
那就取當月最後一天 再加 1 days
08/31 13:21, 5F

08/31 13:23, 6年前 , 6F
取上下月,就抓該15日±30天,不過推 JustGame 的方法
08/31 13:23, 6F

08/31 14:25, 6年前 , 7F
推一樓, 以前用strtotime('next month')中雷想破頭, 把
08/31 14:25, 7F

08/31 14:26, 6年前 , 8F
strtotime("%F", strtotime('next month'))印出來才罵聲幹
08/31 14:26, 8F

08/31 14:28, 6年前 , 9F
更正strftime("%F", ... )
08/31 14:28, 9F

08/31 15:39, 6年前 , 10F
換個方式用 DateTime->diff() 判斷兩個日期的天數差異?
08/31 15:39, 10F

08/31 15:42, 6年前 , 11F
請忽略我,誤以為是月份±1的問題
08/31 15:42, 11F

08/31 16:28, 6年前 , 12F
建議 先 $Now = time(); 再把 $Now喂給函數
08/31 16:28, 12F

08/31 20:40, 6年前 , 13F
原來有一樓這招
08/31 20:40, 13F

09/01 00:26, 6年前 , 14F
09/01 00:26, 14F

09/01 01:16, 6年前 , 15F
根據PHP的官方說明,strtotime的 month 只是個 dummy,其實
09/01 01:16, 15F

09/01 01:16, 6年前 , 16F
等同於 30 days,所以無論你是寫 +/- 1 months 或 +/- 30 da
09/01 01:16, 16F

09/01 01:16, 6年前 , 17F
ys都是相同的。比較推薦的方式還是透過datetime 去取
09/01 01:16, 17F

09/01 01:18, 6年前 , 18F
09/01 01:18, 18F

09/01 05:21, 6年前 , 19F
1F和樓上正解,strtotime的month就是30天,同中雷淚推
09/01 05:21, 19F

09/02 01:40, 6年前 , 20F
還好你們是在 31 天月寫程式XDDDDD 這個雷如果你們在 30 天
09/02 01:40, 20F

09/02 01:40, 6年前 , 21F
月寫程式是看不出來的XD
09/02 01:40, 21F

09/03 14:11, 6年前 , 22F
季節性地雷 噗
09/03 14:11, 22F

09/05 16:57, 6年前 , 23F
只有我蠢蠢的抓月份出來 + - 1 然後遇到0跟13再改的嗎 XD
09/05 16:57, 23F

09/20 07:33, 6年前 , 24F
自己用 carbon 取當月first再next 也踩過這個雷 囧
09/20 07:33, 24F

10/11 22:00, 6年前 , 25F
感謝XDD 真的被雷過才知道不能這樣用XDDD
10/11 22:00, 25F
文章代碼(AID): #1RYAnRB8 (PHP)
文章代碼(AID): #1RYAnRB8 (PHP)