`strtotime` bug when using + 1 month from January

本秂侑毒 提交于 2019-12-07 08:14:10

问题


I' m trying to make a ajax calendar with multiple tabs for a date range previously entered. But for example:

I want get the next month, it prints march instead of february

$start= "2013-01-31";
$current =  date('n', strtotime("+1 month",$start)) //prints 3

I think thats occurs because february 2014 is 28 and add +31 like base from the start month but why?


回答1:


You're trying to add one month to the date 2013-01-31. It should give 31th Feburary 2013, but since the date doesn't exist, it moves on to the next valid month (which is March).

You can use the following work-around:

$current = date('n', strtotime("first day of next month",strtotime($start)));

Using DateTime class:

$date = new DateTime('2013-01-31');
$date->modify('first day of next month');
echo $date->format('n');

This will correctly output 2.

Demo!



来源:https://stackoverflow.com/questions/19727274/strtotime-bug-when-using-1-month-from-january

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!