%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
# we need to comment this out or PAUSE might index it # pack age DateTime::Format::Apache; use DateTime::Format::Builder ( parsers => { parse_datetime => { strptime => '%e/%b/%Y:%H:%M:%S %z', # params => [qw( day month year hour minute second time_zone )], # regex => qr{ ^ # (\d+)/(\w{3})/(\d{4}) # : # (\d\d):(\d\d):(\d\d) # \s # ([+-]\d{4}) # $ }x, # postprocess => sub { # my %args = @_; # $args{parsed}{month} = month_to_num( $args{parsed}{month} ); # 1; # }, }, }, ); sub month_to_num { my $wanted = shift; my %months; my $lang = DateTime::Language->new( language => 'en' ); my $i; $months{$_} = ++$i for @{ $lang->month_abbreviations }; return $months{$wanted}; } sub format_datetime { my ( $self, $dt ) = @_; return $dt->strftime("%e/%b/%Y:%H:%M:%S %z"); } package main; my $parser = DateTime::Format::Apache->new(); my @dates = ( '27/Feb/2003:19:45:11 -0400', '27/Apr/2003:19:45:11 -0400' ); for my $date (@dates) { my $dt = $parser->parse_datetime($date)->set_time_zone('Australia/Sydney'); print "$date => ", $dt->datetime, " => ", $parser->format_datetime($dt), "\n"; }