在过去的几个月里,我一直在使用以下代码,它从预定义的日期开始循环几个月,直到它到达今天的日期。
use Date::Pcalc qw(:all);
$startDay = 1;
$startMonth = '4';
$startYear = '2009';
$dateToday = `date +%Y-%m-%d`;
($yt,$mt,$dt) = split(/\-/,$dateToday);
while ($endMonth <= $mt || $startYear < $yt ) {
if ($startMonth eq '12') {
$endMonth = 1;
$endYear = $startYear + 1;
} else {
$endMonth = $startMonth + 1;
$endYear = $startYear;
}
if ($startMonth eq '12') {
$endYear = $startYear + 1;
}
($meYear,$meMonth,$meDay) = Add_Delta_Days($endYear,$endMonth,$startDay,-1);
$endOfMonth = "$meYear-$meMonth-$meDay";
$monthText = Month_to_Text($startMonth);
$startDate = "$startYear-$startMonth-1";
$endDate = "$endYear-$endMonth-1";
print "$startDate - $endDate\n";
if ($startMonth eq '12') {
$startMonth = 1;
$startYear++;
} else {
$startMonth++
}
}
在过去的几个月里,这一直很有效,但我意识到现在在 12 月,因为 $endmonth 永远不会大于 $mt (12),这会导致无限循环。
我一直无法找出任何替代方法来做到这一点。我觉得我应该能够相对容易地解决这个问题,但我似乎有严重的“开发者障碍”
提前感谢任何可以提供帮助的人。