Home >Backend Development >PHP Tutorial >我勒个去,难道我发现了php的bug?计算下个月最后一天的问题!
话不多说,直接上代码:
$BeginDate="2015-05-31";//新的获取指定月份的最后1天echo date("Y-m-t",strtotime("+1 months",strtotime($BeginDate)));
$BeginDate="2015-05-31";echo date("Y-m-d t",strtotime("+1 months $BeginDate"));2015-07-01 31
哦,学习了
我还以为+1 months就是当月的下一个月
如果这样我认为还是php有bug,这种情况不应该进1位,而是应该返回6月的最后一天
你理解出错了!!
获取下个月最后一天有另外的语法的。
呵呵,加一个月,肯定是7月1日。
如果按照你的逻辑,加一天那不还得等于 5月31日?
bug?是你没把逻辑处理好
取月末我一般用 下个月1日再减1天
自己改了下算法,算是很好的解决了这个问题
虽然有很多方法,我还是坚持认为这是PHP的一个bug,如同一楼说的,5月份有31天那么+1 months就是6月31,但是6月份有30天,所以结果是7月1号,那么这个strtotime的+1 months就是bug!
自己改的方法是:
$begindate="2015-05-31";$enddate=date("Y-m-01",strtotime($begindate));//获得月初$enddate=date("Y-m-t 23:59:59",strtotime("$enddate +1 month"));//月初加1 month然后计算月末最后一天
$BeginDate="2015-05-31";echo date("Y-m-d t",strtotime("+1 months $BeginDate"));2015-07-01 31
是的
不过请你注意:这不是 php 的规则,而是英语里时间计算的规则