PHP date()和strtotime()在31日返回错误的月份
我正在使用date()
和strtotime()
函数在下拉列表中显示接下来的3个月。
PHP代码:
echo date("m/Y",strtotime("+0 months")); echo date("m/Y",strtotime("+1 months"));
echo date("m/Y",strtotime("+2 months"));
但是,如果脚本在服务器日期为30日或31日时运行,则下个月(二月)将显示为三月。即上面的脚本应该返回
01/201202/2012
03/2012
但是,相反,它实际上显示
01/201203/2012
03/2012
那是因为2月没有30号或31号,所以脚本将“ 31/02”转换为“ 01/03”。
我已经阅读了strtotime()
php.net上的页面,此问题已经提出,但是还没有任何有用的解决方案。因此,有人可以帮助我找到解决此问题的简单方法吗?提前致谢!
回答:
如文档中所述,您应该将当月第一天的日期作为第二个参数传递给strtotime()
函数:
$base = strtotime(date('Y-m',time()) . '-01 00:00:01');echo date('m/Y',strtotime('+0 month', $base));
echo date('m/Y',strtotime('+1 month', $base));
echo date('m/Y',strtotime('+2 month', $base));
看到它有效:http :
//ideone.com/eXis9
01/2012
02/2012
03/2012
以上是 PHP date()和strtotime()在31日返回错误的月份 的全部内容, 来源链接: utcz.com/qa/416100.html