繁体   English   中英

使用1月份+1个月时的“strtotime”错误

[英]`strtotime` bug when using + 1 month from January

我正在尝试制作一个带有多个标签的ajax日历,用于之前输入的日期范围。 但是例如:

我想要下个月,它打印行军而不是2月

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

我认为这是因为2014年2月是28并且从开始月份开始增加+31基数,但为什么呢?

您正试图将一个月添加到2013-01-31的日期。 它应该给2013年2月31日,但由于日期不存在,它将进入下一个有效月份(即3月)。

您可以使用以下解决方法:

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

使用DateTime类:

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

这将正确输出2

演示!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM