From: Max Edinarkhov Date: Sat, 25 Apr 2020 19:18:37 +0000 (+1200) Subject: [feature] add support for [YYYY] as ISO8601 format (#4470) X-Git-Tag: 2.25.0~43 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=541336f667e2e4bcc03dcaec34b0308ed99e317f;p=thirdparty%2Fmoment.git [feature] add support for [YYYY] as ISO8601 format (#4470) * [feature] add support for [YYYY] as ISO8601 format (issue #3918) (#4470) * [feature] add support for [YYYY] as ISO8601 format (issue #3918) (#4470) revert support for extended years [+/-YYYYYY], it needs more discussion and work --- diff --git a/src/lib/create/from-string.js b/src/lib/create/from-string.js index bab65a858..fc748b5a3 100644 --- a/src/lib/create/from-string.js +++ b/src/lib/create/from-string.js @@ -10,6 +10,7 @@ import {defaultLocaleWeekdaysShort} from '../units/day-of-week'; // 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) var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; +var yearIsoRegex = /^\s*(\d{4})$/; var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; @@ -25,7 +26,8 @@ var isoDates = [ // YYYYMM is NOT allowed by the standard ['GGGG[W]WWE', /\d{4}W\d{3}/], ['GGGG[W]WW', /\d{4}W\d{2}/, false], - ['YYYYDDD', /\d{7}/] + ['YYYYDDD', /\d{7}/], + ['YYYY', /\d{4}/, false] ]; // iso time formats and regexes @@ -47,7 +49,7 @@ var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; export function configFromISO(config) { var i, l, string = config._i, - match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), + match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string) || yearIsoRegex.exec(string), allowTime, dateFormat, timeFormat, tzFormat; if (match) { diff --git a/src/test/moment/create.js b/src/test/moment/create.js index 956e6d1a3..e9ec4fb25 100644 --- a/src/test/moment/create.js +++ b/src/test/moment/create.js @@ -576,6 +576,8 @@ test('parsing iso', function (assert) { minute = pad(4 + minOffset), formats = [ + ['2011', '2011-01-01T00:00:00.000' + tz], + ['2011-10', '2011-10-01T00:00:00.000' + tz], ['2011-10-08', '2011-10-08T00:00:00.000' + tz], ['2011-10-08T18', '2011-10-08T18:00:00.000' + tz], ['2011-10-08T18:04', '2011-10-08T18:04:00.000' + tz],