TypeScript:
Сравнение двух дат
Как это сделать:
Давайте сравним некоторые даты:
const date1 = new Date('2023-04-01T00:00:00Z');
const date2 = new Date('2023-04-02T00:00:00Z');
// Находится ли date1 до date2?
console.log(date1 < date2); // true
// Является ли date1 тем же, что и date2?
console.log(date1.getTime() === date2.getTime()); // false
// Сколько дней между?
const diffTime = Math.abs(date2.getTime() - date1.getTime());
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
console.log(diffDays); // 1
Пример вывода:
true
false
1
Подробнее
Раньше даты представляли собой кучу форматов и запутанные расчеты. С JavaScript (и, соответственно, TypeScript) объект Date
упростил вещи, стандартизировав то, как мы работаем со временем.
Альтернативы? Конечно. Библиотеки, такие как moment.js
или date-fns
, расширяют работу с датами дополнительной функциональностью. Но для базовых сравнений? Простота нативного Date зачастую справляется с задачей.
Под капотом Date.getTime()
возвращает миллисекунды с эпохи (1 января 1970 года). Сравнение этих значений устраняет странности часовых поясов и високосных секунд, сводя всё к числам.
См. также
- Справочник по объекту Date от Mozilla Developer Network для подробного изучения объектов Date.
- Вам Не Нужен Moment.js когда вам может быть, или не быть, нужна библиотека.
- Официальная документация TypeScript для большего понимания сил и подводных камней TypeScript.