JavaScript: узнать количество дней между датами

Введение Мы часто подсчитываем количество дней от и до свидания. Будь то вычисление того, когда кто-то должен вернуть книгу, когда нужно продлить подписку, сколько дней прошло с момента уведомления или когда приближается новое событие. В этом руководстве мы рассмотрим, как получить количество дней между датами в JavaScript. Объект даты в JavaScript. Дата в JavaScript - это количество тактов (или миллисекунд), прошедших с начала

Вступление

Мы часто оказываемся подсчета количества дней от и до настоящего времени. Будь то вычисление того, когда кто-то должен вернуть книгу, когда нужно продлить подписку, сколько дней прошло с момента уведомления или когда приближается новое событие.

В этом руководстве мы рассмотрим, как получить количество дней между датами в JavaScript .

Объект Date в JavaScript

Date JavaScript - это Number тактов (или миллисекунд), прошедших с начала эпохи UNIX (полночь 1 января 1970 г. по всемирному координированному времени).

Несмотря на то, что, по сути, 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 

Функция принимает две String , представляющие даты. Сначала мы создаем Date из этих строк, после чего вычисляем количество миллисекунд в день. Функция getTime() возвращает время в миллисекундах между началом эпохи Unix и текущим временем. Итак, если мы вычтем дату start end , мы получим количество миллисекунд между ними.

Затем мы можем превратить это количество миллисекунд в дни, разделив его на количество миллисекунд в дне, в результате чего получится количество дней между двумя датами.

Примечание. Этот подход включает start , но исключает дату end

Получите количество дней между датами в 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 

Теперь мы можем использовать js-joda API. Давайте перепишем предыдущую функцию, чтобы использовать 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, для гораздо более лаконичного подхода к решению этой проблемы.

comments powered by Disqus