From 7e305a8ab52f5103da64f36b9158284237a9c703 Mon Sep 17 00:00:00 2001 From: Tauren Mills Date: Tue, 1 Feb 2011 13:02:42 -0800 Subject: [PATCH] support for all ISO8601 timezone offset formats --- .gitignore | 6 ++++++ src/date_util.js | 8 ++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 6686c4c..ce67aad 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,9 @@ build/fullcalendar build/fullcalendar-* dist +.project +.settings +.classpath +target +hs_err* +.tmp_* diff --git a/src/date_util.js b/src/date_util.js index faa7ce6..cfdb03b 100644 --- a/src/date_util.js +++ b/src/date_util.js @@ -162,7 +162,11 @@ function parseDate(s, ignoreTimezone) { // ignoreTimezone defaults to true function parseISO8601(s, ignoreTimezone) { // ignoreTimezone defaults to false // derived from http://delete.me.uk/2005/03/iso8601.html // TODO: for a know glitch/feature, read tests/issue_206_parseDate_dst.html - var m = s.match(/^([0-9]{4})(-([0-9]{2})(-([0-9]{2})([T ]([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?$/); + + // TNM 2011-02-01: Updated regex to support +0000 or +00 timezones in addition to +00:00 + // See: http://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC + var m = s.match(/^([0-9]{4})(-([0-9]{2})(-([0-9]{2})([T ]([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?(Z|(([-+])([0-9]{2})((:?)([0-9]{2}))?))?)?)?)?$/); + if (!m) { return null; } @@ -203,7 +207,7 @@ function parseISO8601(s, ignoreTimezone) { // ignoreTimezone defaults to false m[10] || 0, m[12] ? Number("0." + m[12]) * 1000 : 0 ); - var offset = Number(m[16]) * 60 + Number(m[17]); + var offset = Number(m[16]) * 60 + (m[19] ? Number(m[19]) : 0); offset *= m[15] == '-' ? 1 : -1; date = new Date(+date + (offset * 60 * 1000)); }