最近写一个脚本,获取当前日期上个月的年和月,当当前日期是2013年12月31日的时候,采用date('Y-m-d', strtotime('-1 month'))获取的上个月的日期居然是2013-12-01。顿时有点费解。后来上网一查,发现很多人也发现了这个问题。
一般解决办法是获取当前月,然后判断上个月是不是跨年了来解决。
if( 1 == date('n') )
{
$strLastMonthYear = date('Y') - 1;
$strLastMonthMonth = 12;
}
else
{
$strLastMonthYear = date('Y');
$strLastMonthMonth = date('n') - 1;
}
再进一步搜到网上说这是php内部实现的方式造成的,见http://www.jb51.net/article/37241.htm
貌似php开发组的大神也觉得没问题,并提供了解决办法 见https://bugs.php.net/bug.php?id=44073