/** * Returns the GCalendar timezone offset in seconds. The given * date is used to be DST compatible. * * @param $date * @return offset in seconds */ function getGCalendarTZOffset($date = null) { static $tzs; if ($tzs == null) { $tzs = parse_ini_file(JPATH_SITE . DS . 'components' . DS . 'com_gcalendar' . DS . 'models' . DS . 'timezones.ini'); } $tz = GCalendarUtil::getComponentParameter('timezone'); $offset = '00:00'; if (!empty($tz)) { $offset = $tzs[$tz]; } if ($date == null) { $date = time(); } $dst = GCalendarModelJSONFeed::isDST($date) ? 1 : 0; $gcalendarOffset = ((int) substr($offset, 1, 3) - $dst) * 60 + substr($offset, 3); $gcalendarOffset = substr($offset, 0, 1) == '-' ? -1 * $gcalendarOffset : $gcalendarOffset; return $gcalendarOffset * 60; }
} $requestedDayStart += $SECSINDAY; $isDST = GCalendarModelJSONFeed::isDST($requestedDayStart, $serverTz); $dstAdjustment = 0; if ($wasDSTStart && !$isDST) { $dstAdjustment = 3600; $wasDSTStart = $isDST; } else { if (!$wasDSTStart && $isDST) { $dstAdjustment = -3600; $wasDSTStart = $isDST; } } $requestedDayStart += $dstAdjustment; $requestedDayEnd = $requestedDayStart + $SECSINDAY; $isDST = GCalendarModelJSONFeed::isDST($requestedDayEnd, $serverTz); $dstAdjustment = 0; if ($wasDSTEnd && !$isDST) { $dstAdjustment = 3600; $wasDSTEnd = $isDST; } else { if (!$wasDSTEnd && $isDST) { $dstAdjustment = -3600; $wasDSTEnd = $isDST; } } $requestedDayEnd += $dstAdjustment; } echo json_encode($data); ?>