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
==========================*/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.