The module Time::Local is distributed with core. If you can safely assume GMT, and that the date format is consistent, this example should be about all you need.
my $tstr = 'Sat, 20 Feb 2010 01:31:52 GMT';
my %months;
@months{qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)} = 0..11;
use Time::Local;
my @parts = split(/\W+/, $tstr);
print join(', ', @parts), "\n";
# Get internal time representation from formatted parts
# sec, min, hour, day, mon, year
my $newtime = timegm(@parts[6,5,4,1], $months{$parts[2]}, $parts[3]-19
+00);
# Add an hour, in seconds
$newtime += 60*60;
# Reformat into new time string
$tstr = gmtime($newtime);
# Comma after day, and GMT tag
$tstr =~ s/(?=\s)/,/;
$tstr .= ' GMT';
print "New time is <$tstr>\n";
Caution: Contents may have been coded under pressure.
|