berikut subroutine ( function ) untuk membuat date range di perl
Penggunaan script :
anda bisa memanggil script ini dengan cara :
@date_1 = printDateRange('2013-09-01','2013-09-10','1');
@date_2 = printDateRange('2013-09-01','2013-09-10','2');
maka jika print "@date_1"; akan keluar hasil sebagai berikut :
2013-09-01 2013-09-02 2013-09-03 2013-09-04 2013-09-05 2013-09-06 2013-09-07 2013-09-08 2013-09-09 2013-09-10
jika print "@date_2"; akan keluar hasil sebagai berikut :
20130901 20130902 20130903 20130904 20130905 20130906 20130907 20130908 20130909 20130910
berikut script subroutine printDateRange();
sub printDateRange
{
use POSIX qw/strftime/;
my ($start_date,$end_date,$print_mode);
undef @arout;
if(@_){
$start_date = $_[0];
$end_date = $_[1];
$print_mode = $_[2];
}else{
$start_date = "2010-08-16";
$end_date = "2010-09-16";
}
my @time = (0, 0, 0);
my ($y, $m, $d) = split "-", $start_date;
$y -= 1900;
$m--;
my $offset = 0;
while ((my $date = strftime "%Y-%m-%d", @time, $d + $offset, $m, $y) le $end_date){
# print "$date\n";
if($print_mode eq '1'){
push(@arout,$date);
}
if($print_mode eq '2'){
my $date2 = strftime "%Y%m%d", @time, $d + $offset, $m, $y;
push(@arout,$date2);
}
} continue {
$offset++;
}
return @arout;
}



0 comments:
Post a Comment