On 03/13/2013 12:10 PM, Dave Rolsky wrote: > On Tue, 12 Mar 2013, Bill Moseley wrote: > >> So, I found some old that wrapped a set_time_zone in an eval. >> >> my $dt = DateTime->new( >> year => 2013, >> month => 3, >> day => 10, >> hour => 2, >> minute => 4, >> time_zone => 'floating', >> ); >> >> eval { $dt->set_time_zone( 'America/Los_Angeles' ); }; >> >> print "$dt " . $dt->time_zone . "\n"; >> >> >> The code was using the eval to check if the timezone set failed, and >> if it >> did went on to do something else with $dt (like set to UTC). But, it >> seems like even if it fails the time zone gets set. The above returns >> this >> invalid time: >> >> 2013-03-10T02:04:00 >> DateTime::TimeZone::America::Los_Angeles=HASH(0x7fc4c2aafc90) >> >> My question is should DateTime associate that timezone to $dt if the >> set_time_zone call actually throws an exception? > > This is almost certainly a bug.
Would a fix to first clone the object, attempt to change time zone, and then only set the timezone on the original object if it succeeds? Mark