标签:01 31 month strtotime 12 date PHP
项目中需要循环获取前几个月,但是前几天还好好的,今天突然发现错误,直接上代码(当前日期:2020-12-31)
为什么呢今天不行了呢?打印 $i 也是正常的,查阅资料之后发现当获取上个月的日期时 直接使用 date('Ym', strtotime("-1 month") 是有坑的:
当上一个月或者下一个月没有今天的日时,会输出错误,比如今天是12月31号,但是11月份没有31号,此时date('Y-m-d',strtotime("-1 month")); 输出的结果就是 2020-12-01
同理,当在3月31号/5月31号/7月31号/10月31号/12月31号执行date('Y-m-d',strtotime("-1 month"))时,得到的结果是 3月1号/5月1号//7月1号/10月1号/12月1号。
如何正确的获取上一个月份?
因为每月都有1号,如果需要获取上一个月的月份,可以使用以下的方式获取:
date('Ym', strtotime(date('Y-m-01') . " - 1 month"));
同样如果获取上个月的第一天 date('Y-m-01', strtotime(date('Y-m-01') . " - 1 month")); 而不能简单使用 date('Y-m-01', strtotime("-1 month"));
请各位小伙伴避免采坑~
原文地址:https://blog.csdn.net/weixin_44743841/article/details/112006791
标签:01,31,month,strtotime,12,date,PHP 来源: https://www.cnblogs.com/Noble-zeng/p/15246401.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。