Неверная дата с моментом в IE11 - PullRequest
1 голос
/ 01 апреля 2020

Я получаю сообщение об ошибке «Неверная дата» в этом коде в IE11. Формат event.date: Wednesday, January 22, 2020. Я не уверен, что не так, хотя у меня такое ощущение, что это формат даты.

<span className="number">{moment.utc(event.date).format("D")}</span>

1 Ответ

0 голосов
/ 02 апреля 2020

Проблема в том, что " Среда, 22 января 2020 года " не соответствует ни ISO 8601, ни признанному формату РФ C 2822, см. Документацию moment(String):

При создании момента из строки мы сначала проверяем, соответствует ли строка известным ISO 8601 форматам, затем мы проверяем, соответствует ли строка RF C 2822 Дата и время Формат перед переходом на новую дату (строку), если известный формат не найден.

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

Для получения согласованных результатов при разборе чего-либо, кроме строк ISO 8601, следует использовать String + Format .

Так что в вашем случае вы должны использовать moment.utc(event.date, "ddd, MMMM DD, YYYY").format("D"), где ddd - имя дня в локали, установленное на moment.locale(), MMMM - название месяца в локали, установленное на moment.locale(), DD - день месяца, а YYYY - 4 ди git год.

Пример:

const event = {date: "Wednesday, January 22, 2020"};
console.log(moment.utc(event.date, "ddd, MMMM DD, YYYY").format("D"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
...