Blame examples/Apache.pm

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
}