Do all calculation of onset times in UTC (fixing some bugs).

This commit is contained in:
Andrew McMillan 2011-09-23 13:06:25 +12:00
parent 8347143879
commit d6ea96d2a0
5 changed files with 50 additions and 45 deletions

View File

@ -46,6 +46,7 @@ define( 'DEBUG_EXPAND', false );
* @param object $vResource is a VCALENDAR with a VTIMEZONE containing components needing expansion
* @param object $range_start A RepeatRuleDateTime which is the beginning of the range for events.
* @param object $range_end A RepeatRuleDateTime which is the end of the range for events.
* @param int $offset_from The offset from UTC in seconds at the onset time.
*
* @return array of onset datetimes with UTC from/to offsets
*/
@ -60,8 +61,6 @@ function expand_timezone_onsets( vCalendar $vResource, RepeatRuleDateTime $range
$is_date = false;
$has_repeats = false;
$zone_tz = $vtz->GetPValue('TZID');
$range_start->setTimeZone($zone_tz);
$range_end->setTimeZone($zone_tz);
foreach( $components AS $k => $comp ) {
if ( DEBUG_EXPAND ) {
@ -73,8 +72,14 @@ function expand_timezone_onsets( vCalendar $vResource, RepeatRuleDateTime $range
}
$dtstart_prop = $comp->GetProperty('DTSTART');
if ( !isset($dtstart_prop) ) continue;
$dtstart_prop->SetParameterValue('TZID',$zone_tz);
$dtstart = new RepeatRuleDateTime( $dtstart_prop );
$dtstart->setTimeZone('UTC');
$offset_from = $comp->GetPValue('TZOFFSETFROM');
$offset_from = (($offset_from / 100) * 3600) + ((abs($offset_from) % 100) * 60 * ($offset_from < 0 ? -1 : 0));
$offset_from *= -1;
$offset_from = "$offset_from seconds";
dbg_error_log( 'tz/update', "%s of offset\n", $offset_from);
$dtstart->modify($offset_from);
$is_date = $dtstart->isDate();
$instances[$dtstart->UTC('Y-m-d\TH:i:s\Z')] = $comp;
$rrule = $comp->GetProperty('RRULE');

View File

@ -12,133 +12,133 @@ Content-Type: application/xml; charset="utf-8"
<calscale>Gregorian</calscale>
<observance>
<name>NZST</name>
<onset>2011-04-02T15:00:00Z</onset>
<onset>2011-04-03T14:00:00Z</onset>
<utc-offset-from>+13:00</utc-offset-from>
<utc-offset-to>+12:00</utc-offset-to>
</observance>
<observance>
<name>NZDT</name>
<onset>2011-09-24T14:00:00Z</onset>
<onset>2011-09-25T14:00:00Z</onset>
<utc-offset-from>+12:00</utc-offset-from>
<utc-offset-to>+13:00</utc-offset-to>
</observance>
<observance>
<name>NZST</name>
<onset>2012-03-31T15:00:00Z</onset>
<onset>2012-04-01T14:00:00Z</onset>
<utc-offset-from>+13:00</utc-offset-from>
<utc-offset-to>+12:00</utc-offset-to>
</observance>
<observance>
<name>NZDT</name>
<onset>2012-09-29T14:00:00Z</onset>
<onset>2012-09-30T14:00:00Z</onset>
<utc-offset-from>+12:00</utc-offset-from>
<utc-offset-to>+13:00</utc-offset-to>
</observance>
<observance>
<name>NZST</name>
<onset>2013-04-06T15:00:00Z</onset>
<onset>2013-04-07T14:00:00Z</onset>
<utc-offset-from>+13:00</utc-offset-from>
<utc-offset-to>+12:00</utc-offset-to>
</observance>
<observance>
<name>NZDT</name>
<onset>2013-09-28T14:00:00Z</onset>
<onset>2013-09-29T14:00:00Z</onset>
<utc-offset-from>+12:00</utc-offset-from>
<utc-offset-to>+13:00</utc-offset-to>
</observance>
<observance>
<name>NZST</name>
<onset>2014-04-05T15:00:00Z</onset>
<onset>2014-04-06T14:00:00Z</onset>
<utc-offset-from>+13:00</utc-offset-from>
<utc-offset-to>+12:00</utc-offset-to>
</observance>
<observance>
<name>NZDT</name>
<onset>2014-09-27T14:00:00Z</onset>
<onset>2014-09-28T14:00:00Z</onset>
<utc-offset-from>+12:00</utc-offset-from>
<utc-offset-to>+13:00</utc-offset-to>
</observance>
<observance>
<name>NZST</name>
<onset>2015-04-04T15:00:00Z</onset>
<onset>2015-04-05T14:00:00Z</onset>
<utc-offset-from>+13:00</utc-offset-from>
<utc-offset-to>+12:00</utc-offset-to>
</observance>
<observance>
<name>NZDT</name>
<onset>2015-09-26T14:00:00Z</onset>
<onset>2015-09-27T14:00:00Z</onset>
<utc-offset-from>+12:00</utc-offset-from>
<utc-offset-to>+13:00</utc-offset-to>
</observance>
<observance>
<name>NZST</name>
<onset>2016-04-02T15:00:00Z</onset>
<onset>2016-04-03T14:00:00Z</onset>
<utc-offset-from>+13:00</utc-offset-from>
<utc-offset-to>+12:00</utc-offset-to>
</observance>
<observance>
<name>NZDT</name>
<onset>2016-09-24T14:00:00Z</onset>
<onset>2016-09-25T14:00:00Z</onset>
<utc-offset-from>+12:00</utc-offset-from>
<utc-offset-to>+13:00</utc-offset-to>
</observance>
<observance>
<name>NZST</name>
<onset>2017-04-01T15:00:00Z</onset>
<onset>2017-04-02T14:00:00Z</onset>
<utc-offset-from>+13:00</utc-offset-from>
<utc-offset-to>+12:00</utc-offset-to>
</observance>
<observance>
<name>NZDT</name>
<onset>2017-09-23T14:00:00Z</onset>
<onset>2017-09-24T14:00:00Z</onset>
<utc-offset-from>+12:00</utc-offset-from>
<utc-offset-to>+13:00</utc-offset-to>
</observance>
<observance>
<name>NZST</name>
<onset>2018-03-31T15:00:00Z</onset>
<onset>2018-04-01T14:00:00Z</onset>
<utc-offset-from>+13:00</utc-offset-from>
<utc-offset-to>+12:00</utc-offset-to>
</observance>
<observance>
<name>NZDT</name>
<onset>2018-09-29T14:00:00Z</onset>
<onset>2018-09-30T14:00:00Z</onset>
<utc-offset-from>+12:00</utc-offset-from>
<utc-offset-to>+13:00</utc-offset-to>
</observance>
<observance>
<name>NZST</name>
<onset>2019-04-06T15:00:00Z</onset>
<onset>2019-04-07T14:00:00Z</onset>
<utc-offset-from>+13:00</utc-offset-from>
<utc-offset-to>+12:00</utc-offset-to>
</observance>
<observance>
<name>NZDT</name>
<onset>2019-09-28T14:00:00Z</onset>
<onset>2019-09-29T14:00:00Z</onset>
<utc-offset-from>+12:00</utc-offset-from>
<utc-offset-to>+13:00</utc-offset-to>
</observance>
<observance>
<name>NZST</name>
<onset>2020-04-04T15:00:00Z</onset>
<onset>2020-04-05T14:00:00Z</onset>
<utc-offset-from>+13:00</utc-offset-from>
<utc-offset-to>+12:00</utc-offset-to>
</observance>
<observance>
<name>NZDT</name>
<onset>2020-09-26T14:00:00Z</onset>
<onset>2020-09-27T14:00:00Z</onset>
<utc-offset-from>+12:00</utc-offset-from>
<utc-offset-to>+13:00</utc-offset-to>
</observance>
<observance>
<name>NZST</name>
<onset>2021-04-03T15:00:00Z</onset>
<onset>2021-04-04T14:00:00Z</onset>
<utc-offset-from>+13:00</utc-offset-from>
<utc-offset-to>+12:00</utc-offset-to>
</observance>
<observance>
<name>NZDT</name>
<onset>2021-09-25T14:00:00Z</onset>
<onset>2021-09-26T14:00:00Z</onset>
<utc-offset-from>+12:00</utc-offset-from>
<utc-offset-to>+13:00</utc-offset-to>
</observance>

View File

@ -18,7 +18,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2009-11-01T07:00:00Z</onset>
<onset>2009-11-01T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>
@ -30,7 +30,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2010-11-07T07:00:00Z</onset>
<onset>2010-11-07T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>
@ -42,7 +42,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2011-11-06T07:00:00Z</onset>
<onset>2011-11-06T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>
@ -54,7 +54,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2012-11-04T07:00:00Z</onset>
<onset>2012-11-04T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>
@ -66,7 +66,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2013-11-03T07:00:00Z</onset>
<onset>2013-11-03T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>
@ -78,7 +78,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2014-11-02T07:00:00Z</onset>
<onset>2014-11-02T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>
@ -90,7 +90,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2015-11-01T07:00:00Z</onset>
<onset>2015-11-01T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>
@ -102,7 +102,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2016-11-06T07:00:00Z</onset>
<onset>2016-11-06T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>
@ -114,7 +114,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2017-11-05T07:00:00Z</onset>
<onset>2017-11-05T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>
@ -126,7 +126,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2018-11-04T07:00:00Z</onset>
<onset>2018-11-04T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>
@ -138,7 +138,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2019-11-03T07:00:00Z</onset>
<onset>2019-11-03T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>
@ -150,7 +150,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2020-11-01T07:00:00Z</onset>
<onset>2020-11-01T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>
@ -162,7 +162,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2021-11-07T07:00:00Z</onset>
<onset>2021-11-07T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>

View File

@ -18,7 +18,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2011-11-06T07:00:00Z</onset>
<onset>2011-11-06T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>
@ -30,7 +30,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2012-11-04T07:00:00Z</onset>
<onset>2012-11-04T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>

View File

@ -18,7 +18,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2014-11-02T07:00:00Z</onset>
<onset>2014-11-02T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>
@ -30,7 +30,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2015-11-01T07:00:00Z</onset>
<onset>2015-11-01T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>
@ -42,7 +42,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2016-11-06T07:00:00Z</onset>
<onset>2016-11-06T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>
@ -54,7 +54,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2017-11-05T07:00:00Z</onset>
<onset>2017-11-05T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>
@ -66,7 +66,7 @@ Content-Type: application/xml; charset="utf-8"
</observance>
<observance>
<name>EST</name>
<onset>2018-11-04T07:00:00Z</onset>
<onset>2018-11-04T06:00:00Z</onset>
<utc-offset-from>-04:00</utc-offset-from>
<utc-offset-to>-05:00</utc-offset-to>
</observance>