Regex based date parsing
version 0.81
my $parser = DateTime::Format::Builder->create_parser( regex => qr/^(\d\d\d\d)(\d\d)(\d\d)T(\d\d)(\d\d)(\d\d)$/, params => [ qw( year month day hour minute second ) ], );
In addition to the common keys, \*(C`Regex\*(C' supports:
regex is a regular expression that should capture elements of the datetime string. This is a required element. This is the key whose presence indicates it's a specification that belongs to this class.
params is an arrayref of key names. The captures from the regex are mapped to these ($1 to the first element, $2 to the second, and so on) and handed to \*(C`DateTime->new()\*(C'. This is a required element.
extra is a hashref of extra arguments you wish to give to \*(C`DateTime->new()\*(C'. For example, you could set the \*(C`year\*(C' or \*(C`time_zone\*(C' to defaults: extra => { year => 2004, time_zone => "Australia/Sydney" },
constructor is either an arrayref or a coderef. If an arrayref then the first element is a class name or object, and the second element is a method name (or coderef since Perl allows that sort of thing). The arguments to the call are anything in $p and anything given in the \*(C`extra\*(C' option above. If only a coderef is supplied, then it is called with arguments of $self, $p and \*(C`extra\*(C'. In short: $self->$coderef( %$p, %{ $self->{extra} } ); The method is expected to return a valid DateTime object, or undef in event of failure, but can conceivably return anything it likes. So long as it's 'true'.
See DateTime::Format::Builder for details.
\*(C`[email protected]\*(C' mailing list.
http://datetime.perl.org/
perl, DateTime, DateTime::Format::Builder
Dave Rolsky <[email protected]>
Iain Truskett
This software is Copyright (c) 2013 by Dave Rolsky.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)