javascript сравнить или сопоставить две даты в одинаковом формате - PullRequest
2 голосов
/ 07 мая 2020

Я столкнулся с проблемой в Javascript датах. Я хочу сравнить или сопоставить две даты и показать другой массив.

Мой код:

var ts_hms = new Date().toISOString().
  replace(/T/, ' ').      // replace T with a space
  replace(/\..+/, '');     // delete the dot and everything after
  console.log(ts_hms);     //format 2020-05-07 08:04:26

данные журнала консоли (формат даты)

Array1:
[2020-05-07 02:15:00]

Array2:
[2020-05-07 08:04:26, 2020-05-07 09:04:26, 2020-05-07 10:04:26]

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

Array3: [same data are shows here]

Помните: значение даты изменяется (это не фиксированное значение)

Array1:
[2020-05-07 04:15:00]

Array2:
[2020-05-07 06:04:26, 2020-05-07 07:14:26, 2020-05-07 08:24:26]

Как я могу сопоставить два даты?

Кто-нибудь, помогите мне, пожалуйста?

1 Ответ

1 голос
/ 07 мая 2020

Вот как можно сравнивать массивы дат.

let array1 = [new Date("2020-05-07 02:15:00")]

let array2 = [new Date("2020-05-07 08:04:26"), new Date("2020-05-07 09:04:26"), new Date("2020-05-07 10:04:26")]

let array3 = [new Date("2020-05-07 08:04:26"), new Date("2020-05-07 09:04:26"), new Date("2020-05-07 10:04:27")]

const areArraysEqual = (array1, array2) => {
  // for only date part comparison, strip time part
  array1 = [...array1.map(date => new Date(date.toDateString()))]
  array2 = [...array2.map(date => new Date(date.toDateString()))]
  

  if(array1.length !== array2.length) {
    return false;
  }
  
  for(let i = 0; i < array1.length ; i++) {

    if(array1[i].valueOf() !== array2[i].valueOf()) {
      return false;
    }
  }
  
  return true;
}

console.log(array1)
console.log(array2)
console.log(areArraysEqual(array1, array2))
console.log(areArraysEqual(array2, array3))

Это чрезмерное упрощение, так как если вы хотите сравнивать даты только на основе даты, это не сработает.

...