如何在2个边界日期之间打印日期

时间:2010-12-07 10:19:14

标签: perl

我有2个日期格式:

2007年12月27日

12.03.2010

如何打印这2个日期之间的所有日子(周期)?

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);
}