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
};