我有一个奇怪的问题,我从来没有遇到过使用它们的strtotime()函数之前的PHP。需要关于PHP strtotime()计算错误的建议
$original = strtotime('2015-12-31 12:34:56');
$time = strtotime('+ 2 month', $original);
echo date('m/d/y H:i:s', $original),'<br>',date('m/d/y H:i:s', $time);
我希望得到的输出什么:
12/31/15 12:34:56
02/29/16 12:34:56
我实际得到的输出:
12/31/15 12:34:56
03/02/16 12:34:56
我如何解释这个计算错误?经过相当多的调查后,我意识到PHP使用平均30.5天来做这样的计算。我并不真正关心这种情况发生的原因,而是我能做些什么来解释它。我有一些想法,涉及编写strtotime()时涉及月计算包装,但它似乎是一个复杂的方法...
有一个现有的答案this question但时间部分没有提到的问题(只有一个日期),因此我不认为这个问题是该问题的重复。此外,我主要是在寻求改进我们处理这个问题的方式,而不一定是针对上述问题发布的解决方案。但是,如果我做错了,那么欢迎您删除这个问题:(
因为一个月不是一个固定的长度...... PHP不会给你“两个月后的月份的最后一天”,它需要一个任意月份的长度,在大多数情况下(但不是全部)情况下....如果你想要的话,在本月的第一天增加2个月,然后请求该月的最后一个日期 –