// 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);
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);