Как получить название месяца из даты ISO, используя момент js - PullRequest
2 голосов
/ 05 мая 2020

Я пытаюсь извлечь название месяца из дат ISO.

Я пробую это:

moment('2020-01-01T00:00:00.000Z', 'YYYY-MM-DDTHH:mm:ss.SSS[Z]').month('MMMM');

Я получаю invalid date.

Как я могу извлечь название месяца и номер недели из дат ISO?

Ответы [ 3 ]

3 голосов
/ 05 мая 2020

Как я уже упоминал в комментарии, используйте вместо него .format():

moment('2020-01-01T00:00:00.000Z', 'YYYY-MM-DDTHH:mm:ss.SSS[Z]').format('MMMM');
1 голос
/ 05 мая 2020

Вы должны использовать метод format(). https://momentjs.com/docs/# / parsing /

var month = moment('2020-01-01T00:00:00.000Z', 'YYYY-MM-DDTHH:mm:ss.SSS[Z]').format('MMMM');
0 голосов
/ 05 мая 2020

Уже есть ответ для этого с моментом. js, поэтому для полноты вот один для использования toLocaleString . Обратите внимание, что входная строка должна соответствовать формату , указанному в ECMA-262 .

Один вопрос, который следует учитывать, - хотите ли вы использовать месяц UT C или локальный месяц пользователя. Для пользователей с отрицательным смещением часового пояса "2020-01-01T00: 00: 00.000Z" находится в декабре, а не в январе, например:

let d = new Date('2020-01-01T00:00:00.000Z');
// Zero offset
let utcMonth = d.toLocaleString('en',{month:'long', timeZone:'UTC', timeZoneName: 'long'});
// Negative offset
let spMonth = d.toLocaleString('en',{month:'long', timeZone:'America/Sao_Paulo', timeZoneName: 'long'}); 
console.log('The UTC month is  : ' + utcMonth + '\nSao Paulo month is: ' + spMonth);

Указание часового пояса как UT C гарантирует, что пользователи с отрицательным смещением часового пояса получат январь, а не их местный месяц, которым будет декабрь.

...