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月),则将后一个变量更改为下个月的最后一天。您可以使用例如tdate()得到最后一天:date( 't.m.Y' )

以上是 PHP strtotime +1个月的行为 的全部内容, 来源链接: utcz.com/qa/408242.html

回到顶部