JavaScript: узнаём количество дней между датами
Вступление
Мы часто считаем количество дней от и до даты. Будь то расчет того, когда кто-то должен вернуть книгу, когда следует продлить подписку, сколько дней прошло с момента уведомления или когда ожидается какое-то событие.
В этом уроке мы рассмотрим, как узнать количество дней между датами в JavaScript.
В моем канале вы найдете много задач с собеседований и акутальных инструментов и гайдов для Javascript разработчиков.
Объект Date в JavaScript
Date – это количество (Number) тактов (или миллисекунд), прошедших с начала эпохи UNIX (полночь 1 января 1970 года по UTC).
Несмотря на то, что, по сути, объект Date написан в UTC, все его методы извлекают время и даты в местном часовом поясе:
Date(); // Constructor for a new Date object
Date.now(); // Number of miiliseconds elaspsed since January 1, 1970 00:00:00 UTC
Теперь давайте рассмотрим, как узнать количество дней между двумя датами, используя объект Date в JavaScript.
Количество дней между датами
Чтобы узнать количество дней между двумя датами, создадим простую функцию getNumberOfDays(), которая принимает два объекта Date:
function getNumberOfDays(start, end) {
const date1 = new Date(start);
const date2 = new Date(end);
// One day in milliseconds
const oneDay = 1000 * 60 * 60 * 24;
// Calculating the time difference between two dates
const diffInTime = date2.getTime() - date1.getTime();
// Calculating the no. of days between two dates
const diffInDays = Math.round(diffInTime / oneDay);
return diffInDays;
}
console.log(getNumberOfDays("2/1/2021", "3/1/2021"));
Результат:
28
Функция принимает две строки, наши даты. Сначала из этих строк мы создаем объекты Date, после чего вычисляем количество миллисекунд в день. Функция getTime() выводит время в миллисекундах между началом эпохи Unix и настоящим временем. Итак, если мы вычтем дату начала из даты окончания, мы получим количество миллисекунд между ними.
Затем мы можем превратить это количество миллисекунд в дни, разделив его на количество миллисекунд в день, в результате чего получится количество дней между двумя датами.
Примечание: этот подход включает дату начала, но исключает дату окончания.
Узнаём расстояние между датами в JavaScript с помощью js-joda
Разработчики, знакомые с Java, вероятно, будут знакомы с широко используемой библиотекой Joda-Time, которая была очень популярна до обновления даты/времени Java 8 API.
Joda-Time вдохновило на создание js-joda – библиотеки даты и времени общего назначения для JavaScript, основанной на календарной системе ISO.
Он лёгкий и быстрый, и по сравнению с другими библиотеками, например, Moment.js или утилиты date-utils, он предоставляет собственную реализацию объектов даты/времени вместо того, чтобы полагаться на класс Date из JavaScript.
Импортируем библиотеку с помощью JavaScript:
<script
src="https://cdnjs.cloudflare.com/ajax/libs/js-joda/1.11.0/js-joda.min.js"
</script>
Или используя NPM:
$ npm install js-joda
Теперь мы можем использовать API js-joda. Перепишем предыдущую функцию, чтобы использовать класс LocalDate, предоставленный js-joda:
const JSJoda = require('js-joda');
const LocalDate = JSJoda.LocalDate;
function getNumberOfDays(start, end) {
const start_date = new LocalDate.parse(start);
const end_date = new LocalDate.parse(end);
return JSJoda.ChronoUnit.DAYS.between(start_date, end_date);
}
console.log(getNumberOfDays("2021-02-01", "2021-03-01"));
Результат тот же:
28
Примечание: этот подход также исключает значение end_date.
Заключение
В этом уроке мы рассмотрели, как получить расстояние между датами в JavaScript. Помимо встроенного подхода, основанного на классе Date, мы изучили библиотеку js-joda, вдохновлённую библиотекой Joda-Time на основе Java, для гораздо более простого подхода к решению этой проблемы.
Ооо Вот это LIKE !!!