PHP strtotime +1个月的行为
我知道PHP函数的有害行为
例如,向以下日期添加一个月(+1个月):31.01.2011-> 03.03.2011
我 ,并且该解决方案背后有一些争论,但至少对我而言,这种行为造成了很多时间的浪费(过去和现在),我个人讨厌它。
我发现甚至更陌生的是,例如:
DATE_ADD(‘2011-01-31’,INTERVAL 1 MONTH)返回2011-02-28或
其中新的DateTime(2011,01,31).AddMonths(1); 将返回28.02.2011
wolframalpha.com给出31.01.2013
+ 1 month输入;将于2013年2月28日星期四返回
这个我在PHP错误报告中看到
“如果我说我们从现在开始一个月后会见,那将是星期几”或类似的东西。答案是:如果下个月不存在31,请告诉我该月的最后一天,但
是否有一个PHP函数(由某人编写)可以解决这个未被官方认可的bug?因为我不认为我是唯一一个在添加/减去月份时想要其他行为的人。
我对解决方案特别感兴趣,该解决方案不仅可以在本月底使用,而且可以完全替代strtotime
。案件strotime +n months
也应处理。
编码愉快!
回答:
这是您可以使用的算法。实现自己应该足够简单。
- 在变量中有原始日期和+1个月日期
- 提取两个变量的月份部分
- 如果差异大于1个月(或者原始日期是12月,另一个不是1月),则将后一个变量更改为下个月的最后一天。您可以使用例如
t
在date()
得到最后一天:date( 't.m.Y' )
以上是 PHP strtotime +1个月的行为 的全部内容, 来源链接: utcz.com/qa/408242.html