我正在使用date()和strtotime()函数在下拉列表中显示接下来的3个月。
date()
strtotime()
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/2012 02/2012 03/2012
但是,相反,它实际上显示
01/2012 03/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