Синтаксический анализ даты из массива — JS

#javascript

#javascript

Вопрос:

У меня есть массив с датой. Когда я его анализирую, месяц увеличивается на 1. Как я могу это исправить?

 var data = [{
  name: 'Arun',
  date: [2019, 4, 9, 14, 55, 28, 897778]
}, {
  name: 'Manohar',
  date: [2019, 4, 3, 22, 43, 54, 894553]
}]

data.forEach((item) => {
  item.date.pop()
  item.date = new Date(...item.date).toLocaleString('en-US')
});

console.log(data)  

Я хочу, чтобы месяц был апрелем, а не маем. Пожалуйста, совет.

Ответ №1:

Согласно документации, значение monthIndex будет начинаться с 0, а не с 1. Поэтому вам нужно вручную вычесть 1.

 data.forEach((item) => {
  item.date.pop()
  item.date[1]--
  item.date = new Date(...item.date).toLocaleString('en-US')
});
  

Комментарии:

1. Как уменьшить значение месяца в имеющемся у меня цикле?

2. Спасибо. Ценю помощь. Просто любопытно, будет ли это преобразовано с января 2019 года в декабрь 2018 года?

3. Да, так и будет. Но, учитывая, что источник ваших данных должен возвращать только месяцы от 1 до 12, значение monthIndex будет только между 0 и 11 . Вы могли бы добавить проверку, если хотите.

Ответ №2:

Месяц представлен значением от 0 до 11, 4 — пятый месяц, он соответствует маю, вам просто нужно уменьшить его на 1.

Комментарии:

1. Как уменьшить значение месяца в имеющемся у меня цикле?