Проверьте, содержит ли массив Дату, то есть между двумя датами во втором массиве

#javascript

Вопрос:

У меня есть два массива.

 let dateArray = ['2018-05-04T00:00:00 01:00', '2019-04-20T00:00:00 01:00', '2020-05-29T00:00:00 01:00'];

let rangesArray = [['2021-09-01','2022-09-01'],['2019-09-01','2020-09-01']];

 

Как проверить, находятся ли даты из dateArray между датами в rangesArray.

rangesArray[0] — это первый диапазон, меня интересуют даты между 2021-09-01 и 2022-09-01.

rangesArray[1] является вторым диапазоном — меня интересуют даты между 2019-09-01 и 2020-09-01.

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

1. Это не даты — это строки. Шаг 1: создайте даты.

2. @RandyCasburn прав. Создайте даты с помощью новой даты() . Вы также можете установить определенный формат для своей даты. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

Ответ №1:

В одну сторону :

 let dateArray = ['2018-05-04T00:00:00 01:00', '2019-04-20T00:00:00 01:00', '2020-05-29T00:00:00 01:00'];

let rangesArray = [['2021-09-01','2022-09-01'],['2019-09-01','2020-09-01']];

const res = []
dateArray.forEach(d => {
  rangesArray.forEach(a => {
    if ((new Date(d) >= new Date(a[0])) amp;amp; (new Date(d) <= new Date(a[1]))){
      res.push({date: d, range: a[0]   ' '   a[1]})
    }
  })
})

console.log(res) 

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

1. В своем заявлении if вы используете ... >= ... amp;amp; ... <= ... . Я думаю, что это ошибка, потому что дата не может быть равна началу и концу диапазона в одно и то же время. Это должно быть >= amp;amp; < или > amp;amp; <= .

2. Привет, приятель 🙂 дата не обязательно должна быть равной, она может быть (меньше ИЛИ равна) и (больше ИЛИ равна)

3. Привет 🙂 Вы абсолютно правы !

Ответ №2:

используется Date.parse() для преобразования строки в дату для сравнения.

рабочий пример:

 function dateCheck(from, to, check) {
  var fDate, lDate, cDate;
  fDate = Date.parse(from);
  lDate = Date.parse(to);
  cDate = Date.parse(check);

  if (cDate <= lDate amp;amp; cDate >= fDate) {
    return true;
  }
  return false;
}

let dateArray = [
  "2018-05-04T00:00:00 01:00",
  "2019-04-20T00:00:00 01:00",
  "2020-05-29T00:00:00 01:00",
];

let rangesArray = [
  ["2021-09-01", "2022-09-01"],
  ["2019-09-01", "2020-09-01"],
];

for (let i = 0; i < dateArray.length; i  ) {
  for (let j = 0; j < rangesArray.length; j  ) {
    console.log(dateCheck(rangesArray[j][0], rangesArray[j][1], dateArray[i]));
  }
} 

пояснение:
dateCheck функция проверяет, находится ли дата между from датой и to датой. с помощью двух циклов вы можете получить желаемый результат.