Max Campos schreef:

> It looks like Cairo changes its daylight savings at 11pm, causing
> truncate(to=> day) to fail on Apr 25, 2008. Is this by chance
> corrected in a newer version of DateTime?  I'm using v.30
>
> If not, then I guess this really opens up a can of worms as to what
> "today" should do on this date.
>
> use DateTime;
> $x = DateTime->new(year => 2008, month => 4, day => 25, hour => 12,
> minute => 12);
> $x->set_time_zone('Africa/Cairo');
> $x->truncate(to => 'day');
> print "$x\n";
> -------------
> Invalid local time for date in time zone: Africa/Cairo

Maybe add a "safe => 1" (with new, add, subtract) such that the
following
don't die() anymore:

perl -MData::Dumper -MDateTime -e'
     $dt = DateTime->new( safe =>1,
         year => 2008, month => 3, day => 25, time_zone =>
"Africa/Cairo",
     )->add(months => 1);
     print Dumper($dt)
' |less

perl -MData::Dumper -MDateTime -e'
     $dt = DateTime->new( safe => 1,
         year => 2008, month => 4, day => 26, time_zone =>
"Africa/Cairo",
     )->subtract(days => 1);
     print Dumper($dt)
' |less

perl -MData::Dumper -MDateTime -e'
     $dt = DateTime->new( safe => 1,
         year => 2008, month => 4, day => 25, time_zone =>
"Africa/Cairo",
     );
     print Dumper($dt)
' |less

They should all return "2008-04-25 01:00:00" I suppose.

Somewhat related: Maybe also add a newdate() that carries no time
information.

-- 
Affijn, Ruud

"Gewoon is een tijger."

Reply via email to