我勒个去,难道我发现了php的bug?计算下个月最后一天的问题!
程序员文章站
2022-06-02 20:17:24
...
话不多说,直接上代码:
根据经验,计算结果应该是:2015-06-30
但是实际运行结果不是,大家请试试,并求教大家这是为啥~~~~搞晕了我了
另:如果把开始时间设置为2015-05-30计算结果是正确的
有什么问题吗?
5月31日加一个月(6月是30天)所以就是7月1日,7月的最后一天不就是31日吗
看来是你的经验出问题了
有什么问题吗?
5月31日加一个月(6月是30天)所以就是7月1日,7月的最后一天不就是31日吗
看来是你的经验出问题了
请问PHP的加一个月是怎么计算的?5月31号加一个月的话就是简单的5月+1=6月31号?然后6月31号不存在所以计算结果是7月31号?
如果5月31号加一天就是5月32号,但是5月32号不存在就是6月1号?
我这样理解对吗?
$BeginDate="2015-05-31";//新的获取指定月份的最后1天echo date("Y-m-t",strtotime("+1 months",strtotime($BeginDate)));
根据经验,计算结果应该是:2015-06-30
但是实际运行结果不是,大家请试试,并求教大家这是为啥~~~~搞晕了我了
另:如果把开始时间设置为2015-05-30计算结果是正确的
回复讨论(解决方案)
$BeginDate="2015-05-31";echo date("Y-m-d t",strtotime("+1 months $BeginDate"));2015-07-01 31
有什么问题吗?
5月31日加一个月(6月是30天)所以就是7月1日,7月的最后一天不就是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
有什么问题吗?
5月31日加一个月(6月是30天)所以就是7月1日,7月的最后一天不就是31日吗
看来是你的经验出问题了
请问PHP的加一个月是怎么计算的?5月31号加一个月的话就是简单的5月+1=6月31号?然后6月31号不存在所以计算结果是7月31号?
如果5月31号加一天就是5月32号,但是5月32号不存在就是6月1号?
我这样理解对吗?
是的
不过请你注意:这不是 php 的规则,而是英语里时间计算的规则