[Tickets #13223] [Icalendar] Import of ics with a timezone that no longer observes DST fails.
noreply at bugs.horde.org
noreply at bugs.horde.org
Tue May 27 01:51:22 UTC 2014
DO NOT REPLY TO THIS MESSAGE. THIS EMAIL ADDRESS IS NOT MONITORED.
Ticket URL: http://bugs.horde.org/ticket/13223
------------------------------------------------------------------------------
Ticket | 13223
Created By | Michael Rubinsky <mrubinsk at horde.org>
Summary | [Icalendar] Import of ics with a timezone that no
| longer observes DST fails.
Queue | Horde Framework Packages
Version | Git master
Type | Bug
State | Assigned
Priority | 1. Low
Milestone |
Patch |
Owners | Jan Schneider, Michael Rubinsky
------------------------------------------------------------------------------
Michael Rubinsky <mrubinsk at horde.org> (2014-05-27 01:51) wrote:
For timezones that, at one point in the past, observed DST but no
longer do, dates will be imported using the offset from the most
recent vTimezone component without an UNTIL in the RRULE.
For example, the attached ics from Simon Wilson is in
Australia/Brisbane timezone, which does not observe DST, but did in
the past. All of the components with RRULEs have UNTIL dates in the
past because currently this timezone ONLY observes standard time.
However, the most recent component in the vTImezone that does NOT have
an UNTIL happens to be a component describing a DST transition (other
DAYLIGHT components appear after this initial one, but they all
contained UNTIL). So, when Horde_Icalendar_Vtimezone::parseChild() is
called in Horde_Icalendar_Vtimezone::_parseTZID() this is the most
recent component that is included in the $change_times array:
array(6) {
[0]=>
array(3) {
["time"]=>
int(-1672567140)
["from"]=>
int(36000)
["to"]=>
int(39600)
}
[1]=>
array(3) {
["time"]=>
int(-1665388800)
["from"]=>
int(39600)
["to"]=>
int(36000)
}
[2]=>
array(3) {
["time"]=>
int(-883641600)
["from"]=>
int(36000)
["to"]=>
int(39600)
}
[3]=>
array(3) {
["time"]=>
int(-876124800)
["from"]=>
int(39600)
["to"]=>
int(36000)
}
[4]=>
array(3) {
["time"]=>
int(-860400000)
["from"]=>
int(36000)
["to"]=>
int(39600)
}
[5]=>
array(3) {
["time"]=>
int(-828345600)
["from"]=>
int(36000)
["to"]=>
int(39600)
}
}
Therefore, when looking for the correct offset to return, the DST
offset of 39600 is returned instead of the correct 36000.
More information about the bugs
mailing list