作者bill0205 (ZzZz)
看板PHP
标题[请益] 如何正确取得下一个月的月份
时间Fri Aug 31 10:47:52 2018
因为要做验证
我需要验证当月的前後一个月内的年和月
例如现在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://webptt.com/cn.aspx?n=bbs/PHP/M.1535683675.A.2C8.html
1F:→ JustGame: 真的一定要用 strtotime 的话,应该就是用 08/31 11:06
2F:→ JustGame: strtotime('first day of next month') 08/31 11:06
3F:推 fantania: 没有9/31 所以会自动变10月 08/31 12:16
4F:→ LMGG: 前後月份日期如果不同天数,就会出错 08/31 12:37
5F:→ joedenkidd: 那就取当月最後一天 再加 1 days 08/31 13:21
6F:→ shadowjohn: 取上下月,就抓该15日±30天,不过推 JustGame 的方法 08/31 13:23
7F:推 Jerr: 推一楼, 以前用strtotime('next month')中雷想破头, 把 08/31 14:25
8F:→ Jerr: strtotime("%F", strtotime('next month'))印出来才骂声干 08/31 14:26
9F:→ Jerr: 更正strftime("%F", ... ) 08/31 14:28
10F:→ Phedra: 换个方式用 DateTime->diff() 判断两个日期的天数差异? 08/31 15:39
11F:→ Phedra: 请忽略我,误以为是月份±1的问题 08/31 15:42
12F:→ newversion: 建议 先 $Now = time(); 再把 $Now喂给函数 08/31 16:28
13F:推 jaywang4: 原来有一楼这招 08/31 20:40
15F:推 KKFN: 根据PHP的官方说明,strtotime的 month 只是个 dummy,其实 09/01 01:16
16F:→ KKFN: 等同於 30 days,所以无论你是写 +/- 1 months 或 +/- 30 da 09/01 01:16
17F:→ KKFN: ys都是相同的。比较推荐的方式还是透过datetime 去取 09/01 01:16
19F:推 akikusa: 1F和楼上正解,strtotime的month就是30天,同中雷泪推 09/01 05:21
20F:推 KKFN: 还好你们是在 31 天月写程式XDDDDD 这个雷如果你们在 30 天 09/02 01:40
21F:→ KKFN: 月写程式是看不出来的XD 09/02 01:40
22F:→ MOONRAKER: 季节性地雷 噗 09/03 14:11
23F:推 ailio: 只有我蠢蠢的抓月份出来 + - 1 然後遇到0跟13再改的吗 XD 09/05 16:57
24F:推 molopo: 自己用 carbon 取当月first再next 也踩过这个雷 囧 09/20 07:33
25F:→ bill0205: 感谢XDD 真的被雷过才知道不能这样用XDDD 10/11 22:00