最近写一个脚本,获取当前日期上个月的年和月,当当前日期是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
本文探讨了使用PHP获取上个月日期时遇到的一个问题:当当前日期为年末时,使用内置函数可能会返回错误的结果。文章提供了正确的解决方案,并解释了这一现象背后的原因。
901

被折叠的 条评论
为什么被折叠?



