Re: Seconds left in day + DST
[email protected] (Dave Rolsky)
| Newsgroups | perl.datetime |
|---|---|
| Message-ID | <[email protected]> |
On Thu, 19 Jun 2008, Jim Spath wrote: > I'm a bit unclear on how to properly deal with DST when determining the > number of seconds left in a day. > > Here's what I have now: > > my $now = DateTime->now(time_zone => 'local'); > > my $tom = > ($dt + DateTime::Duration->new(days => 1))->truncate(to => 'day')); > > my $seconds_left = $tom_dt->epoch() - $dt->epoch(); > > It seems to work fine, but another developer here mentioned that it might not > handle DST properly, although he wasn't sure how to do it himself. There is a method to do subtraction between two datetimes and return the difference in seconds, subtract_datetime_absolute(). It handles leap seconds and DST properly. Your method will also work for DST, but it's a little clunky, plus it won't work outside the limited range of the epoch. Generally speaking, you should only use the epoch when you have to interact with some non-DateTime module/system that requires epochs. Otherwise stick with the DateTime.pm-provided methods for maximum correctness and flexibility (and slowness, unfortunately ;) -dave /*========================== VegGuide.Org Your guide to all that's veg ==========================*/