Как сравнить две даты?

даты в формате 12.06.2022 и 11.06.2022

первая всегда должна быть больше, чем вторая


Ответы (2 шт):

Автор решения: De.Minov

Я писал вам ответ, там сверяются две даты, всего лишь нужно подставить ваши значения:

let dateA = '12.06.2022';
let dateB = '11.06.2022';

// Т.к. new Date(); принимает данные в формате YYYY/MM/DD, то проще всего будет разделить строку по точкам и развернуть получившийся массив
let a = dateA.split('.').reverse();
let b = dateB.split('.').reverse();

// Далее создаём Date
a = new Date(a);
b = new Date(b);

// Вернём даты в миллисекундах (timestamp)
a = a.getTime();
b = b.getTime();

//Проверяем, a > b
console.info(`${dateA} > ${dateB}? - ${a > b}`);

Или в сравнение в качестве функции:

let dateA = '12.06.2022';
let dateB = '11.06.2022';

function DateAMoreB(a, b) {
  a = a.split('.').reverse();
  b = b.split('.').reverse();

  return new Date(a).getTime() > new Date(b).getTime();
}

console.info(`${dateA} > ${dateB}? - ${DateAMoreB(dateA, dateB)}`);
console.info(`${dateB} > ${dateA}? - ${DateAMoreB(dateB, dateA)}`);

→ Ссылка
Автор решения: Stanislav Volodarskiy

Если формат даты фиксирован (ровно две цифры день, ровно две цифры месяц, ровно четыре цифры год), прибегать к преобразованию строк в объекты-даты нет необходимости:

    // '11.06.2022` -> '2022/06/11'
    const reorder = a => a.split('.').reverse().join('/');

Такие строки-даты можно сравнивать как строки. Порядок совпадёт с календарным:

const dateCompare = (a, b) => {
    const reorder = a => a.split('.').reverse().join('/');
    return reorder(a).localeCompare(reorder(b));
};

console.log(dateCompare('10.06.2022', '11.06.2022'));
console.log(dateCompare('11.06.2022', '11.06.2022'));
console.log(dateCompare('12.06.2022', '11.06.2022'));

P.S. .join('/') тут для красоты промежуточного результата. Можно использовать любой разделитель. Можно просто склеить .join('') или через запятую .join().

→ Ссылка