[Koha-bugs] [Bug 16376] New: Koha::Calendar->is_holiday date truncation creates fatal errors for TZ America/Santiago

bugzilla-daemon at bugs.koha-community.org bugzilla-daemon at bugs.koha-community.org
Thu Apr 28 08:31:45 CEST 2016


https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=16376

            Bug ID: 16376
           Summary: Koha::Calendar->is_holiday date truncation creates
                    fatal errors for TZ America/Santiago
 Change sponsored?: ---
           Product: Koha
           Version: 3.20
          Hardware: All
                OS: All
            Status: NEW
          Severity: critical
          Priority: P5 - low
         Component: Circulation
          Assignee: koha-bugs at lists.koha-community.org
          Reporter: dcook at prosentient.com.au
        QA Contact: testopia at bugs.koha-community.org
                CC: gmcharlt at gmail.com, kyle.m.hall at gmail.com

Koha::Calendar->is_holiday calls the following DateTime truncate method:

$localdt->truncate( to => 'day' );

This will truncate 2015-09-06 12:00:00 down to 2015-09-06 00:00:00. 

This causes major problems in Santiago, Chile, because 2015-09-06 is an invalid
local time due to DST. 

I can't explain why it's a problem in 2015 because DST is weird in Chile in
2015, but it's obviously a problem for every other year as well:
http://www.timeanddate.com/time/change/chile/santiago?year=2015

Consider 2014:
2014    Sunday, 27 April, 12:00 Midnight        Sunday, 7 September, 12:00
Midnight

You shouldn't have a problem on 27 April, because when 27 April 12:00 midnight
hits (relative to UTC), local time is changed to 27 April 11:00pm. While UTC
marches on, local time has been magically moved back an hour. 

You will have a problem on 7 September 12:00 midnight though, because that time
doesn't exist. As soon as we roll over from 6 September 11:59pm to the next
minute... we're actually on to 7 September 01:00:00am. Midnight doesn't exist
on that day, which creates the following error in DateTime.pm:

"Invalid local time for date in time zone: America/Santiago"

This is a problem that the DateTime writer predicted. You can see their
comments here:
http://cpansearch.perl.org/src/DROLSKY/DateTime-1.26/lib/DateTime.pm
https://rt.cpan.org/Public/Bug/Display.html?id=93347

We should probably do something like:

eval {
    $dt->truncate(to => 'day');
} || warn "Eval failed with '$@'\n";

Why are we even doing this day truncation?

-- 
You are receiving this mail because:
You are the assignee for the bug.
You are watching all bug changes.


More information about the Koha-bugs mailing list