|
Packit |
9002b2 |
# we need to comment this out or PAUSE might index it
|
|
Packit |
9002b2 |
# pack age DateTime::Format::Apache;
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
use DateTime::Format::Builder (
|
|
Packit |
9002b2 |
parsers => {
|
|
Packit |
9002b2 |
parse_datetime => {
|
|
Packit |
9002b2 |
strptime => '%e/%b/%Y:%H:%M:%S %z',
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
# params => [qw( day month year hour minute second time_zone )],
|
|
Packit |
9002b2 |
# regex => qr{ ^
|
|
Packit |
9002b2 |
# (\d+)/(\w{3})/(\d{4})
|
|
Packit |
9002b2 |
# :
|
|
Packit |
9002b2 |
# (\d\d):(\d\d):(\d\d)
|
|
Packit |
9002b2 |
# \s
|
|
Packit |
9002b2 |
# ([+-]\d{4})
|
|
Packit |
9002b2 |
# $ }x,
|
|
Packit |
9002b2 |
# postprocess => sub {
|
|
Packit |
9002b2 |
# my %args = @_;
|
|
Packit |
9002b2 |
# $args{parsed}{month} = month_to_num( $args{parsed}{month} );
|
|
Packit |
9002b2 |
# 1;
|
|
Packit |
9002b2 |
# },
|
|
Packit |
9002b2 |
},
|
|
Packit |
9002b2 |
},
|
|
Packit |
9002b2 |
);
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
sub month_to_num {
|
|
Packit |
9002b2 |
my $wanted = shift;
|
|
Packit |
9002b2 |
my %months;
|
|
Packit |
9002b2 |
my $lang = DateTime::Language->new( language => 'en' );
|
|
Packit |
9002b2 |
my $i;
|
|
Packit |
9002b2 |
$months{$_} = ++$i for @{ $lang->month_abbreviations };
|
|
Packit |
9002b2 |
return $months{$wanted};
|
|
Packit |
9002b2 |
}
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
sub format_datetime {
|
|
Packit |
9002b2 |
my ( $self, $dt ) = @_;
|
|
Packit |
9002b2 |
return $dt->strftime("%e/%b/%Y:%H:%M:%S %z");
|
|
Packit |
9002b2 |
}
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
package main;
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
my $parser = DateTime::Format::Apache->new();
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
my @dates = ( '27/Feb/2003:19:45:11 -0400', '27/Apr/2003:19:45:11 -0400' );
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
for my $date (@dates) {
|
|
Packit |
9002b2 |
my $dt
|
|
Packit |
9002b2 |
= $parser->parse_datetime($date)->set_time_zone('Australia/Sydney');
|
|
Packit |
9002b2 |
print "$date => ", $dt->datetime, " => ", $parser->format_datetime($dt),
|
|
Packit |
9002b2 |
"\n";
|
|
Packit |
9002b2 |
}
|