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

Bdf*_*dfy 2 perl

我有2个日期格式:

2007年12月27日

12.03.2010

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

Dav*_*oss 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);
}
Run Code Online (Sandbox Code Playgroud)

  • 因为"旧式"日期和时间模块都做一件事.他们中的大多数都做得很好,但如果您想要将Date :: Calc和Date :: Parse结合使用,则会遇到问题,因为它们具有完全不同的日期和时间内部表示.DateTime系列模块是一组集成的模块,这些模块明确地设计为一起工作.一旦您切换到使用DateTime模块,您将能够完成您想要的所有操作,而无需在不兼容的表示之间进行转换. (2认同)