我有2个日期格式:
2007年12月27日
12.03.2010
如何打印这2个日期之间的所有日子(周期)?
答案 0 :(得分:5)
我知道你已经接受了答案,但它使用的是相当笨重的旧Date :: Calc模块。现在,大多数人会建议使用DateTime。
#!/usr/bin/perl
use strict;
use warnings;
use DateTime;
my %start;
@start{qw[day month year]} = split /\./, '27.12.2007';
my %end;
@end{qw[day month year]} = split /\./, '12.03.2010';
my $start = DateTime->new(%start);
my $end = DateTime->new(%end);
my $curr = $start;
while ($curr <= $end) {
print $curr->ymd, "\n";
$curr->add(days => 1);
}
答案 1 :(得分:3)
使用Date::Calc
。
use Date::Calc qw(Delta_Days Add_Delta_Days);
my @begin = reverse split /\./, '27.12.2007';
my @end = reverse split /\./, '12.03.2010';
my $delta = Delta_Days(@begin, @end);
for my $i (0..$delta) {
printf "%d-%02d-%02d\n", Add_Delta_Days(@begin, $i);
}