[请益] 如何正确取得下一个月的月份

楼主: 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