OK, you can mainly ignore my previous posts .. I'm still interested in them, but there's a large hole that needs plugging first:

Once I set my local time zone I get incorrect results!

It looks like the time zone is adding a leap day between Nov 17 and Jan 1st in Melbourne! Oops!



#This one works:

$d1=DateTime->new(year=>2004);
$d2=$d1->clone->add(days=>-45);
$d=$d2-$d1;
print Dumper($d, {($d2-$d1)->deltas})

2004-01-01T00:00:00
2003-11-17T00:00:00
$VAR1 = {
          'seconds' => 0,
          'minutes' => 0,
          'nanoseconds' => 0,
          'days' => -14,
          'months' => -1
        };

#This one doesn't

$d1=DateTime->new(year=>2004,time_zone=>"Australia/Melbourne");
$d2=$d1->clone->add(days=>-45);
$d=$d2-$d1;
print Dumper($d, {($d2-$d1)->deltas})

2004-01-01T00:00:00
2003-11-17T00:00:00
$VAR1 = {
          'seconds' => 0,
          'minutes' => 0,
          'nanoseconds' => 0,
          'days' => -15,
          'months' => -1
        };

#This one *does*

$d1=DateTime->new(year=>2004,time_zone=>"America/New_York");
$d2=$d1->clone->add(days=>-45);
$d=$d2-$d1;
print Dumper($d, {($d2-$d1)->deltas})

2004-01-01T00:00:00
2003-11-17T00:00:00
$VAR1 = {
          'seconds' => 0,
          'minutes' => 0,
          'nanoseconds' => 0,
          'days' => -14,
          'months' => -1
        };

Reply via email to