From e95bf9114e4fc4c09d3db3a4e11e1382e01af85f Mon Sep 17 00:00:00 2001 From: "mozilla%kewis.ch" Date: Tue, 6 May 2008 15:46:48 +0000 Subject: [PATCH] Fix bug 427006 - Timezone offset incorrectly calculated for negative half hour timezones. r=dbo git-svn-id: svn://10.0.0.236/trunk@251260 18797224-902f-48f8-a5cc-f745e15eee43 --- .../providers/gdata/components/calGoogleCalendar.js | 10 ++++++++++ .../providers/gdata/components/calGoogleUtils.js | 11 ++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/mozilla/calendar/providers/gdata/components/calGoogleCalendar.js b/mozilla/calendar/providers/gdata/components/calGoogleCalendar.js index 23084997aa2..c56209e4089 100644 --- a/mozilla/calendar/providers/gdata/components/calGoogleCalendar.js +++ b/mozilla/calendar/providers/gdata/components/calGoogleCalendar.js @@ -285,6 +285,9 @@ calGoogleCalendar.prototype = { request.operationListener = aListener; request.calendar = this; + var ctz = gdataTimezoneProvider.getShortTimezone(calendarDefaultTimezone()); + request.addQueryParameter("ctz", ctz); + this.session.asyncItemRequest(request); return request; } catch (e) { @@ -372,6 +375,9 @@ calGoogleCalendar.prototype = { request.oldItem = aOldItem; request.calendar = this; + var ctz = gdataTimezoneProvider.getShortTimezone(calendarDefaultTimezone()); + request.addQueryParameter("ctz", ctz); + this.session.asyncItemRequest(request); return request; } catch (e) { @@ -471,6 +477,8 @@ calGoogleCalendar.prototype = { request.calendar = this; // Request Parameters + var ctz = gdataTimezoneProvider.getShortTimezone(calendarDefaultTimezone()); + request.addQueryParameter("ctz", ctz); request.addQueryParameter("max-results", kMANY_EVENTS); request.addQueryParameter("singleevents", "false"); @@ -545,6 +553,8 @@ calGoogleCalendar.prototype = { request.itemFilter = aItemFilter; // Request Parameters + var ctz = gdataTimezoneProvider.getShortTimezone(calendarDefaultTimezone()); + request.addQueryParameter("ctz", ctz); request.addQueryParameter("max-results", aCount ? aCount : kMANY_EVENTS); request.addQueryParameter("singleevents", "false"); diff --git a/mozilla/calendar/providers/gdata/components/calGoogleUtils.js b/mozilla/calendar/providers/gdata/components/calGoogleUtils.js index 9f80d6245ff..c0aaea500de 100644 --- a/mozilla/calendar/providers/gdata/components/calGoogleUtils.js +++ b/mozilla/calendar/providers/gdata/components/calGoogleUtils.js @@ -352,9 +352,10 @@ function toRFC3339(aDateTime) { return ""; } - var tzoffset_hr = Math.floor(aDateTime.timezoneOffset / 3600); + var full_tzoffset = aDateTime.timezoneOffset; + var tzoffset_hr = Math.floor(Math.abs(full_tzoffset) / 3600); - var tzoffset_mn = ((aDateTime.timezoneOffset / 3600).toFixed(2) - + var tzoffset_mn = ((Math.abs(full_tzoffset) / 3600).toFixed(2) - tzoffset_hr) * 60; var str = aDateTime.year + "-" + @@ -368,9 +369,9 @@ function toRFC3339(aDateTime) { ("00" + aDateTime.minute).substr(-2) + ":" + ("00" + aDateTime.second).substr(-2); if (aDateTime.timezoneOffset != 0) { - str += (tzoffset_hr < 0 ? "-" : "+") + - ("00" + Math.abs(tzoffset_hr)).substr(-2) + ":" + - ("00" + Math.abs(tzoffset_mn)).substr(-2); + str += (full_tzoffset < 0 ? "-" : "+") + + ("00" + tzoffset_hr).substr(-2) + ":" + + ("00" + tzoffset_mn).substr(-2); } else if (aDateTime.timezone.isFloating) { // RFC3339 Section 4.3 Unknown Local Offset Convention str += "-00:00";