开发者

perl sub routine for getting a range of dates

Is there a perl routine that I can utilize that would do the following? I'm looking for a good example.

I want to be able to print out a list of days based on a range.

As a parameter I want to be able to do something like: ./myperlscript -r 20110630 20110731 (as an example where 开发者_JAVA技巧-r = range).

So basically, if I can put (2) dates in this format as inputs and print me those days.

20110630
20110701
20110702
...
..


This should get you started. You probably want to add some input validation (ie making sure that the elements of @ARGV are formatted correctly and that the first represents a date smaller than the second, etc, etc...).

use strict;
use warnings;
use DateTime;

unless(@ARGV==2)
{
    print "Usage: myperlscript first_date last_date\n";
    exit(1);
}

my ($first_date,$last_date)=@ARGV;

my $date=DateTime->new(
{
  year=>substr($first_date,0,4),
  month=>substr($first_date,4,2),
  day=>substr($first_date,6,2)
});


while($date->ymd('') le $last_date)
{
  print $date->ymd('') . "\n";
  $date->add(days=>1);
}

ETA: In case it isn't clear what's going on, we create $date as a DateTime object, parsing the year, month, and day that were given in $first_date. Then, we keep printing out the year, month, and day without separators ($date->ymd('')) and increase $date by one day until we're at $last_date.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜