]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
fixes for Z in ISO parser
authorIsaac Cambron <isaac@isaaccambron.com>
Mon, 14 Oct 2013 08:28:35 +0000 (04:28 -0400)
committerIsaac Cambron <isaac@isaaccambron.com>
Mon, 14 Oct 2013 08:28:35 +0000 (04:28 -0400)
moment.js
test/moment/create.js

index e97318d66299c9a01cdc85e359704ac22593eceb..a256f1b02fae8b4e9a07a1f5dda868d8b9499ba0 100644 (file)
--- a/moment.js
+++ b/moment.js
@@ -54,7 +54,7 @@
 
         // 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:?\d\d)?)?$/,
+        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:?\d\d|Z)?)?$/,
 
         isoFormat = 'YYYY-MM-DDTHH:mm:ssZ',
 
             nullInput : false,
             invalidMonth : null,
             invalidFormat : false,
-            userInvalidated : false
+            userInvalidated : false,
+            iso: false
         };
     }
 
             match = isoRegex.exec(string);
 
         if (match) {
+            config._pf.iso = true;
             for (i = 4; i > 0; i--) {
                 if (match[i]) {
                     // match[5] should be "T" or undefined
                 }
             }
             if (parseTokenTimezone.exec(string)) {
-                config._f += " Z";
+                config._f += "Z";
             }
             makeDateFromStringAndFormat(config);
         }
             config._i = input = getLangDefinition().preparse(input);
         }
 
-
         if (moment.isMoment(input)) {
             config = extend({}, input);
 
index fc0da3dfdc714024df6180fd51fff13a6efa9ea6..3127afbcb7053dc259ec0abab04e859accf551c5 100644 (file)
@@ -486,6 +486,35 @@ exports.create = {
         test.done();
     },
 
+    "parsing ISO with Z" : function (test) {
+        var i, mom, formats = [
+            ['2011-10-08T18:04Z',             '2011-10-08T18:04:00.000'],
+            ['2011-10-08T18:04:20Z',          '2011-10-08T18:04:20.000'],
+            ['2011-10-08T18:04:20.1Z',        '2011-10-08T18:04:20.100'],
+            ['2011-10-08T18:04:20.11Z',       '2011-10-08T18:04:20.110'],
+            ['2011-10-08T18:04:20.111Z',      '2011-10-08T18:04:20.111'],
+            ['2011-W40-6T18Z',                '2011-10-08T18:00:00.000'],
+            ['2011-W40-6T18:04Z',             '2011-10-08T18:04:00.000'],
+            ['2011-W40-6T18:04:20Z',          '2011-10-08T18:04:20.000'],
+            ['2011-W40-6T18:04:20.1Z',        '2011-10-08T18:04:20.100'],
+            ['2011-W40-6T18:04:20.11Z',       '2011-10-08T18:04:20.110'],
+            ['2011-W40-6T18:04:20.111Z',      '2011-10-08T18:04:20.111'],
+            ['2011-281T18Z',                  '2011-10-08T18:00:00.000'],
+            ['2011-281T18:04Z',               '2011-10-08T18:04:00.000'],
+            ['2011-281T18:04:20Z',            '2011-10-08T18:04:20.000'],
+            ['2011-281T18:04:20Z',            '2011-10-08T18:04:20.000'],
+            ['2011-281T18:04:20.1Z',          '2011-10-08T18:04:20.100'],
+            ['2011-281T18:04:20.11Z',         '2011-10-08T18:04:20.110'],
+            ['2011-281T18:04:20.111Z',        '2011-10-08T18:04:20.111']
+        ];
+
+        for (i = 0; i < formats.length; i++) {
+            mom = moment(formats[i][0]).utc();
+            test.equal(mom.format('YYYY-MM-DDTHH:mm:ss.SSS'), formats[i][1], "moment should be able to parse ISO in UTC " + formats[i][0]);
+        }
+        test.done();
+    },
+
     "parsing iso with T" : function (test) {
         test.expect(8);