Формат даты с использованием moment.js - PullRequest
0 голосов
/ 04 июля 2019
this.state.date = "20190704153907"   
 moment(this.state.date).format("DD MMMM YYYY hh:mm:ss")

Я получаю неправильную дату

Я пробовал в другом формате stll, показывая то же самое

Ожидаемый результат:

4 July 2019 15:39:07

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Если вы посмотрите в консоль, вы увидите предупреждение от момента:

Предупреждение об устаревании: предоставленное значение не соответствует распознанному формату RFC2822 или ISO. момент конструирования возвращается к js Date (), который не надежен во всех браузерах и версиях. Форматы дат, отличные от RFC2822 / ISO, не рекомендуется и будут удалены в следующем основном выпуске. Пожалуйста, обратитесь к http://momentjs.com/guides/#/warnings/js-date/ для получения дополнительной информации.

Формат, который вы используете для вашей строки даты, не является форматом ISO и, вероятно, не поддерживается ни одним из «зависящих от реализации эвристических или специфических для реализации форматов дат» ¹, которые JavaScript двигатели могут использовать, чтобы угадать, что вы имели в виду.

Решение состоит в том, чтобы сообщить Моменту формат :

const date = "20190704153907";
const m = moment(date, "YYYYMMDDHHmmss");
console.log(m.format("DD MMMM YYYY hh:mm:ss"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

Обратите внимание, что это выводит 04, а не 4, как в ожидаемом выводе. Если вы хотите 4 вместо 04, удалите одну из D в вашей строке format (например, .format(..., "D MMMM YYYY hh:mm:ss")):

const date = "20190704153907";
const m = moment(date, "YYYYMMDDHHmmss");
console.log(m.format("D MMMM YYYY hh:mm:ss"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

¹ https://tc39.es/ecma262/#sec-date.parse

0 голосов
/ 04 июля 2019

Ваша дата действительно недействительна. Проверьте документы анализа

Вы можете попытаться изменить его с помощью регулярного выражения, чтобы оно соответствовало известному шаблону даты или эквивалентному ему.

...