漏洞
首先,我需要纠正一个小错误:
if($time_month<1) // If month==0
{
$time_month=12; // New month==12
$time_year--;
}
这样,有 13 个月......( 0,1,2,3,4,5,6,7,8,9,10,11,12 )。日期指定date("m")
从 1 到 12,那么该代码应该是:
if($time_month==1) // If month==1
{
$time_month=12; // New month==12
$time_year--;
}
不要优化
再想一想,我不会费心尝试进一步优化它。请记住,过早的优化是万恶之源。如果您的代码有效并且相对较短(就是这种情况),那么最好保持这种状态。想想即使有一个函数可以做你想做的事,唯一的区别是你不必自己编写代码,但后台进程会非常相似,所以没有太多需要优化的地方(关于速度/资源)。
评论你的代码
另外,我建议写一两行评论说明它的作用。如果您想在一年左右的时间内重用它,那么理解代码将会很有用。
最后一个想法。不同的月份有不同的日子。我不确定您的代码是与手动输入一起使用还是根据当天使用,但是如果您写的是 03 会发生day="31";
什么date("m")
?
可能的解决方案
看看这个:链接。它以这种方式工作:
<?php
$date = new DateTime('2000-01-20');
$date->sub(new DateInterval('P10D')); // 10 days ago
echo $date->format('Y-m-d') . "\n";
?>
它会输出2000-01-10