Bug 1551893: Require strict zero-pad for time element if T exists r=arai

Make T as a strictness marker for ISO8601 time element, as it already does for the date element.

Differential Revision: https://phabricator.services.mozilla.com/D31418

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Kagami Sascha Rosylight 2019-05-16 18:02:58 +00:00
Родитель aeec5fec87
Коммит 1cf88b074c
2 изменённых файлов: 19 добавлений и 7 удалений

Просмотреть файл

@ -919,6 +919,7 @@ static bool ParseISOStyleDate(const CharT* s, size_t length,
size_t tzHour = 0;
size_t tzMin = 0;
bool isPermissive = false;
bool isStrict = false;
#define PEEK(ch) (i < length && s[i] == ch)
@ -954,7 +955,11 @@ static bool ParseISOStyleDate(const CharT* s, size_t length,
return false; \
} \
if (i < pre + (n)) { \
isPermissive = true; \
if (isStrict) { \
return false; \
} else { \
isPermissive = true; \
} \
}
if (PEEK('+') || PEEK('-')) {
@ -978,6 +983,7 @@ done_date:
// exists
return false;
}
isStrict = true;
i++;
} else if (PEEK(' ')) {
i++;

Просмотреть файл

@ -31,13 +31,13 @@ assertEq(new Date("+001997-03-8 11:19:20").getTime(),
assertEq(new Date("1997-03-08 11:19").getTime(),
new Date("1997-03-08T11:19").getTime());
assertEq(new Date("1997-03-08 1:19").getTime(),
new Date("1997-03-08T1:19").getTime());
new Date("1997-03-08T01:19").getTime());
assertEq(new Date("1997-03-08 1:1").getTime(),
new Date("1997-03-08T1:1").getTime());
new Date("1997-03-08T01:01").getTime());
assertEq(new Date("1997-03-08 1:1:01").getTime(),
new Date("1997-03-08T1:1:01").getTime());
new Date("1997-03-08T01:01:01").getTime());
assertEq(new Date("1997-03-08 1:1:1").getTime(),
new Date("1997-03-08T1:1:1").getTime());
new Date("1997-03-08T01:01:01").getTime());
assertEq(new Date("1997-03-08 11").getTime(),
new Date("1997-03-08T11").getTime()); // Date(NaN)
assertEq(new Date("1997-03-08").getTime(),
@ -58,10 +58,16 @@ assertEq(new Date("+001997-3-08T11:19:20").getTime(),
new Date(NaN).getTime());
assertEq(new Date("1997-3-8 :00:01").getTime(),
new Date(NaN).getTime());
assertEq(new Date("1997-3-8 :00:01").getTime(),
new Date(NaN).getTime());
assertEq(new Date("1997-3-8 01::01").getTime(),
new Date(NaN).getTime());
assertEq(new Date("1997-03-08T1:19").getTime(),
new Date(NaN).getTime());
assertEq(new Date("1997-03-08T1:1").getTime(),
new Date(NaN).getTime());
assertEq(new Date("1997-03-08T1:1:01").getTime(),
new Date(NaN).getTime());
assertEq(new Date("1997-03-08T1:1:1").getTime(),
new Date(NaN).getTime());
/******************************************************************************/