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
==========================*/