moment.js / date На iOS отображается как NaN - PullRequest
0 голосов
/ 11 июля 2019

Я получаю NaN при расчете даты в iOS. Для десктопа и Android работает отлично, но iOS и Safari я получаю NaN

Вот мой код:

last_visit_date приходит из базы данных, например: "2019-06-07T00:00:00.000Z"

let formattedLastVisitDate = moment(last_visit_date).format('MM-DD-YYYY') --- RESULT: "06-06-2019"

let testing = moment(formattedLastVisitDate).add('30', 'days').format('MM-DD-YYYY') -- RESULT "Invalid Date"

let add14Days = moment(testing).add('14', 'days').format('MM-DD-YYYY') -- RESULT "Invalid Date"

Почему эта логика не работает только на iOS?

1 Ответ

3 голосов
/ 11 июля 2019

И в moment(formattedLastVisitDate), и в moment(testing) вы анализируете строку в формате MM-DD-YYYY. Если вы посмотрите на консоль разработчика, то увидите, что вы получили предупреждение об устаревании. Это описано в руководствах Moment.js здесь .

При разборе строки либо выполните синтаксический анализ одного из поддерживаемых форматов строки , либо предоставьте спецификацию форматирования второй аргумент, например, так:

moment(formattedLastVisitDate, 'MM-DD-YYYY')

В некоторых браузерах происходит сбой, а в других - по причине, описанной в сообщении об устаревании, а именно к тому, что он возвращается к встроенному поведению Date.parse, которое имеет определенное поведение, зависящее от реализации, и, следовательно, различается в разных браузерах.

...