perl DateTime now() problem

Posted by Sergey Sinkovskiy on Stack Overflow See other posts from Stack Overflow or by Sergey Sinkovskiy
Published on 2010-12-23T12:16:37Z Indexed on 2010/12/23 12:54 UTC
Read the original article Hit count: 193

Filed under:
|
|
|

Having this script

use DateTime;
use DateTime::Format::Strptime;

my $p = DateTime::Format::Strptime->new(pattern => '%F %T',
                                        time_zone => 'local');

my $dt1 = DateTime->now(time_zone=>'local')->set_time_zone('UTC');
my $dt2 = $p->parse_datetime('2010-10-23 14:10:02')->set_time_zone('UTC');

print Dumper($dt1->hms);
print Dumper($dt2->hms);
print Dumper($dt1 > $dt2);

The problem is that $dt1 is off by 1 hour. Like

$VAR1 = '12:09:55';
$VAR1 = '11:10:02';
$VAR1 = 1;

If I remove set_time_zone('UTC') in both cases - dumped values are okay.

My feel is that somewhere DST is taken into account unnecessarily, but can't find out.

Update: I dumped $dt->time_zone->name and $dt->offset for both and that's what i get.

$VAR1 = 'Europe/Kiev';
$VAR1 = 7200;
$VAR1 = 'Europe/Kiev';
$VAR1 = 10800;

How this could be possible?

© Stack Overflow or respective owner

Related posts about perl

Related posts about datetime