Ссылаясь на документацию moment.js String + Formats я ожидал эти две строки, чтобы вернуть тот же объект даты:moment.js Струнные + Форматы не работает, как ожидалось
moment('12.05.1989', ['DD.MM.YYYY','YYYY-MM-DD']);
moment('1989-05-12', ['DD.MM.YYYY','YYYY-MM-DD']);
Однако то, что я получаю это для первая дата:
{ _i: '12.05.1989',
_f: 'YYYY-MM-DD',
_l: undefined,
_isUTC: false,
_a:
[ 12,
4,
19,
0,
0,
0,
0 ],
_d: Sat May 19 12 00:00:00 GMT+0200 (W. Europe Summer Time),
_isValid: true }
Хотя вторая является правильным:
{ _i: '1989-05-12',
_f: 'YYYY-MM-DD',
_l: undefined,
_isUTC: false,
_a:
[ 1989,
4,
12,
0,
0,
0,
0 ],
_d: Fri May 12 1989 00:00:00 GMT+0200 (W. Europe Summer Time),
_isValid: true }
Когда Я изменяю порядок форматов в массиве, это совсем наоборот, он использует последний формат в массиве.
Что я делаю неправильно?
Я хочу избежать обходных решений, таких как проверка строки для «-» или «.».
Но посмотрите на пример из документации: 'момент (" 12- 25-1995 », [« ММ-ДД-ГГГГ »,« ГГГГ-ММ-ДД »]);' - если бы вы были правы, это не займет 12-й, 25-й, 1995-й день ...? +1 для regex так или иначе :) – ToniTornado
@ToniTornado попробуйте сделать это с '12-01-1995', это тоже неправильно. По-видимому, «момент» знает, что в вашем примере нет 25-го месяца и вместо этого будет использовать первый шаблон. Я не знаю, почему он не будет принимать недопустимые месяцы, но * будет * принимать недопустимые дни. – robertklep