]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Support 2-digit HH timezones as valid ISO 8601 (fixes #1357)
authorpimterry <pimterry@gmail.com>
Sun, 15 Dec 2013 18:36:33 +0000 (18:36 +0000)
committerpimterry <pimterry@gmail.com>
Sun, 15 Dec 2013 18:37:04 +0000 (18:37 +0000)
moment.js
test/moment/create.js
test/moment/is_valid.js

index 79f8e831db1e1e1485b386dab2a0bac463943e50..2e54c853da80598cdfd71650349d2de9bdea9040 100644 (file)
--- a/moment.js
+++ b/moment.js
@@ -60,9 +60,9 @@
         parseTokenFourDigits = /\d{4}/, // 0000 - 9999
         parseTokenSixDigits = /[+\-]?\d{6}/, // -999,999 - 999,999
 
-        // preliminary iso regex
-        // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000)
-        isoRegex = /^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d:?\d\d|\s*Z)?)?$/,
+        // iso 8601 regex
+        // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
+        isoRegex = /^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d:?(?:\d\d)?|\s*Z)?)?$/,
 
         isoFormat = 'YYYY-MM-DDTHH:mm:ssZ',
 
index a5dac42bb38037a1789c05836d7fcc77a995f069..7c22208edb59cac72f438dd068199d300f224c1e 100644 (file)
@@ -425,6 +425,7 @@ exports.create = {
             minOffset = offset - (hourOffset * 60),
             tz = (offset > 0) ? '-' + pad(hourOffset) + ':' + pad(minOffset) : '+' + pad(-hourOffset) + ':' + pad(-minOffset),
             tz2 = tz.replace(':', ''),
+            tz3 = tz2.slice(0, 3),
             formats = [
                 ['2011-10-08',                    '2011-10-08T00:00:00.000' + tz],
                 ['2011-10-08T18',                 '2011-10-08T18:00:00.000' + tz],
@@ -434,6 +435,8 @@ exports.create = {
                 ['2011-10-08T18:04:20' + tz,      '2011-10-08T18:04:20.000' + tz],
                 ['2011-10-08T18:04' + tz2,        '2011-10-08T18:04:00.000' + tz],
                 ['2011-10-08T18:04:20' + tz2,     '2011-10-08T18:04:20.000' + tz],
+                ['2011-10-08T18:04' + tz3,        '2011-10-08T18:04:00.000' + tz],
+                ['2011-10-08T18:04:20' + tz3,     '2011-10-08T18:04:20.000' + tz],
                 ['2011-10-08T18:04:20.1' + tz2,   '2011-10-08T18:04:20.100' + tz],
                 ['2011-10-08T18:04:20.11' + tz2,  '2011-10-08T18:04:20.110' + tz],
                 ['2011-10-08T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz],
@@ -444,6 +447,8 @@ exports.create = {
                 ['2011-10-08 18:04:20' + tz,      '2011-10-08T18:04:20.000' + tz],
                 ['2011-10-08 18:04' + tz2,        '2011-10-08T18:04:00.000' + tz],
                 ['2011-10-08 18:04:20' + tz2,     '2011-10-08T18:04:20.000' + tz],
+                ['2011-10-08 18:04' + tz3,        '2011-10-08T18:04:00.000' + tz],
+                ['2011-10-08 18:04:20' + tz3,     '2011-10-08T18:04:20.000' + tz],
                 ['2011-10-08 18:04:20.1' + tz2,   '2011-10-08T18:04:20.100' + tz],
                 ['2011-10-08 18:04:20.11' + tz2,  '2011-10-08T18:04:20.110' + tz],
                 ['2011-10-08 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz],
@@ -456,6 +461,8 @@ exports.create = {
                 ['2011-W40-6T18:04:20' + tz,      '2011-10-08T18:04:20.000' + tz],
                 ['2011-W40-6T18:04' + tz2,        '2011-10-08T18:04:00.000' + tz],
                 ['2011-W40-6T18:04:20' + tz2,     '2011-10-08T18:04:20.000' + tz],
+                ['2011-W40-6T18:04' + tz3,        '2011-10-08T18:04:00.000' + tz],
+                ['2011-W40-6T18:04:20' + tz3,     '2011-10-08T18:04:20.000' + tz],
                 ['2011-W40-6T18:04:20.1' + tz2,   '2011-10-08T18:04:20.100' + tz],
                 ['2011-W40-6T18:04:20.11' + tz2,  '2011-10-08T18:04:20.110' + tz],
                 ['2011-W40-6T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz],
@@ -466,6 +473,8 @@ exports.create = {
                 ['2011-W40-6 18:04:20' + tz,      '2011-10-08T18:04:20.000' + tz],
                 ['2011-W40-6 18:04' + tz2,        '2011-10-08T18:04:00.000' + tz],
                 ['2011-W40-6 18:04:20' + tz2,     '2011-10-08T18:04:20.000' + tz],
+                ['2011-W40-6 18:04' + tz3,        '2011-10-08T18:04:00.000' + tz],
+                ['2011-W40-6 18:04:20' + tz3,     '2011-10-08T18:04:20.000' + tz],
                 ['2011-W40-6 18:04:20.1' + tz2,   '2011-10-08T18:04:20.100' + tz],
                 ['2011-W40-6 18:04:20.11' + tz2,  '2011-10-08T18:04:20.110' + tz],
                 ['2011-W40-6 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz],
@@ -477,6 +486,8 @@ exports.create = {
                 ['2011-281T18:04:20' + tz,        '2011-10-08T18:04:20.000' + tz],
                 ['2011-281T18:04' + tz2,          '2011-10-08T18:04:00.000' + tz],
                 ['2011-281T18:04:20' + tz2,       '2011-10-08T18:04:20.000' + tz],
+                ['2011-281T18:04' + tz3,          '2011-10-08T18:04:00.000' + tz],
+                ['2011-281T18:04:20' + tz3,       '2011-10-08T18:04:20.000' + tz],
                 ['2011-281T18:04:20.1' + tz2,     '2011-10-08T18:04:20.100' + tz],
                 ['2011-281T18:04:20.11' + tz2,    '2011-10-08T18:04:20.110' + tz],
                 ['2011-281T18:04:20.111' + tz2,   '2011-10-08T18:04:20.111' + tz],
@@ -487,6 +498,8 @@ exports.create = {
                 ['2011-281 18:04:20' + tz,        '2011-10-08T18:04:20.000' + tz],
                 ['2011-281 18:04' + tz2,          '2011-10-08T18:04:00.000' + tz],
                 ['2011-281 18:04:20' + tz2,       '2011-10-08T18:04:20.000' + tz],
+                ['2011-281 18:04' + tz3,          '2011-10-08T18:04:00.000' + tz],
+                ['2011-281 18:04:20' + tz3,       '2011-10-08T18:04:20.000' + tz],
                 ['2011-281 18:04:20.1' + tz2,     '2011-10-08T18:04:20.100' + tz],
                 ['2011-281 18:04:20.11' + tz2,    '2011-10-08T18:04:20.110' + tz],
                 ['2011-281 18:04:20.111' + tz2,   '2011-10-08T18:04:20.111' + tz]
index f32b744835ebc6354081ace7ef8f481131248528..f805e59eb29c3b188e57da9c78a75fdeed4d018c 100644 (file)
@@ -155,7 +155,8 @@ exports.is_valid = {
             '2010-01-30T23:59:59+00:00',
             '2010-01-30T23:59:59.999+00:00',
             '2010-01-30T23:59:59.999-07:00',
-            '2010-01-30T00:00:00.000+07:00'
+            '2010-01-30T00:00:00.000+07:00',
+            '2010-01-30T00:00:00.000+07'
         ], i;
 
         test.expect(tests.length * 2);