Javascript количество дней между двумя датами

Эта простая задача решается не менее просто.Для нахождения разницы дней между двумя датами у нас должны быть эти даты. К примеру:

28.09.2014 15:30 — 28 сентября 2014 года 14 часов 30 минут

17.10.2014 19:37 — 17 октября 2014 года 19 часов 37 минут

Далее мы распарсим эти даты, чтобы выделить дни, годы, месяцы, часы и минуты для использования из в функции Date.UTC. Эта функция имеет такой формат:

Date.UTC(год, месяц, день[, часы[, минуты[, секунды[, миллисекунды]]]])

Чтобы распарсить дату мы воспользуемся регулярными выражениями:


first_date = "28.09.2014 15:30";

var first_array = first_date(/(\d{2})\.(\d{2})\.(\d{4}) (\d{2}):(\d{2})/);

В результате мы получим массив такого вида:

first_array[1]; // день
first_array[2]; // месяц
first_array[3]; // год
first_array[4]; // часы
first_array[5]; // минуты

Осталось использовать функцию Date.UTC, затем найти разницу между датами и привести все это к суткам. Общий код будет таким:

first_date = "28.09.2014 15:30";
second_date = "17.10.2014 19:37";
first_array = first_date.match(/(\d{2})\.(\d{2})\.(\d{4}) (\d{2}):(\d{2})/);
second_array = second_date.match(/(\d{2})\.(\d{2})\.(\d{4}) (\d{2}):(\d{2})/);
first = Date.UTC(first_array[3], first_array[2]-1, first_array[1], first_array[4], first_array[5]);
second = Date.UTC(second_array[3], second_array[2]-1, second_array[1], second_array[4], second_array[5]);
days = Math.ceil((second - first)/(1000*60*60*24));

В конце мы округляем значение до большего целого.

Обратите внимание, что функция Date.UTC использует нумерацию месяцев на 1 меньше, т. е. январь — это не первый месяц, а нулевой и т. д.

Меток нет. Похожие записи
Запись опубликована в рубрике Новости. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>