Как мне проанализировать вывод `date -u` (команда unix date, UTC) с помощью moment.js? - PullRequest
1 голос
/ 22 мая 2019

Я буквально только что заметил, что команда unix date не выводит даты в формате iso8601 или RFC2822. ?

У меня есть некоторые входные документы json с датой, указанной в качестве вывода unix date -u, например: Mon Oct 22 04:08:48 UTC 2018. Мои даты всегда в UTC, потому что они были сгенерированы с date -u. (В следующий раз я буду умным и просто использую date -u +"%Y-%m-%dT%H:%M:%SZ", чтобы получить дату iso8601.)

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

Я пытаюсь разобрать их с помощью moment.js:

const instr = 'Mon Oct 22 03:53:08 UTC 2018';
const dateFormatString = "ddd MMM DD HH:mm:ss [UTC] GGGG";
const parsedDate = moment.utc(instr, dateFormatString, true);

Это все еще просто дает мне:

moment.invalid(/* Mon Oct 22 03:53:08 UTC 2018 */)

Что я делаю не так?

Пример:

https://jsfiddle.net/1c3g0r4j/

var parseString  = 'Mon Oct 22 03:53:08 UTC 2018'; 
var formatString = 'ddd MMM DD HH:mm:ss [UTC] gggg';
var locale = 'en';
var strictParse = true;
var parsed = moment.utc(parseString, formatString, locale, strictParse);

alert(parsed.isValid())  //false

1 Ответ

0 голосов
/ 23 мая 2019

Марк Мейер (Mark Meyer) выше предоставляет нам решение, которое, похоже, использует маркер года для конкретной локали YYYY.

var parseString  = 'Mon Oct 22 03:53:08 UTC 2018'; 
var formatString = 'ddd MMM DD HH:mm:ss [UTC] YYYY';
var locale = 'en';
var strictParse = true;
var parsed = moment.utc(parseString, formatString, locale, strictParse);

alert(parsed.isValid())
alert(parsed.toISOString())

...