Как сравнить две даты?
даты в формате 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().