Subject: | Bug handling time zones like America/New_York |
If you do this:
use DateTime::Format::Strptime;
my $dt=new DateTime::Format::Strptime (pattern => '%O');
print $dt->parse_datetime('America/Chicago');
---> works correctly
print $dt->parse_datetime('America/New_York');
---> prints:
The timezone 'America/New_york' could not be loaded, or is an
invalid name.
The bug lies with a regular expression which is missing a /g at the end.
Patch:
--- Strptime.pm 2005-11-29 15:52:51.000000000 +0100
+++ Strptime.pm 2005-11-29 15:47:06.000000000 +0100
@@ -330,7 +330,7 @@
if ($tz_olson) {
$tz_olson = ucfirst lc $tz_olson;
- $tz_olson =~ s|([/_])(\w)|$1\U$2|;
+ $tz_olson =~ s|([/_])(\w)|$1\U$2|g;
my $tz = DateTime::TimeZone->new( name => $tz_olson );
$self->local_croak("I don't recognise the time zone
'$tz_olson'.") \
and return undef unless $tz; $use_timezone = $set_time_zone = $tz;