Вычитание дат в Javascript
Всем доброго времени суток!
Я новичок в Javascript, знаю самый минимум возможностей, а передо мной появилась такая задача: Есть три тега списка select: День, Месяц, Год Есть также три тега списка select для другой даты в том же формате. Задача: вычесть одну дату из другой, т.е. получить разницу в днях (но не миллисекундах, часах и т.д.) На данный момент получается почему-то, что даже если даты указаны одинаковые, возвращается большое значение в миллисекундах. И работает ли вычитание я понять пока не могу :( Подскажите, пожалуйста, как реализовать такой функционал? В интернете копался, откуда и почерпнул аналогию решения задачи, но принцип здесь по-видимому в нюансах работы с методом Date(). Подскажите, пожалуйста, как с использованием значений даты из формы провести вычитание дат и получить результат в виде количества дней? Ниже представлю свой код, который есть на данный момент. Всем заранее спасибо за участие и внимание! function daysCalc() { var dayStart = parseInt(jQuery("#day").val(), 10); var monthStart = parseInt(jQuery("#month").val()); var yearStart = parseInt(jQuery("#year").val()); var dateStart = new Date(yearStart, monthStart, dayStart); var dayEnd = parseInt(jQuery("#day-end").val()); var monthEnd = parseInt(jQuery("#month-end").val()); var yearEnd = parseInt(jQuery("#year-end").val()); var dateEnd = new Date(yearEnd, monthEnd, dayEnd); var subtract = (dateEnd - dayStart); alert(subtract); } |
Искренне прошу прощения за дубликат темы.
Отключился интернет, авторизацию пришлось пройти заново и темы создались две. |
пример вычисления количества дней до нового года:
var date1 = new Date(); var date2 = new Date("1/1/2015"); var diff = date2 - date1; var milliseconds = diff; var seconds = milliseconds / 1000; var minutes = seconds / 60; var hours = minutes / 60; var days = hours / 24; alert(days); alert(Math.ceil(days)); |
melky,
Спасибо большое! Ваш вариант работает. Но появился дополнительный вопрос: Почему-то если выбирать дату начала например такую: 29.12.2014 и дату окончания 3.1.2015 результатом является число -26 (если не использовать предложенную Вами функцию alert(Math.ceil(days));) А с использованием в результате получается 0. Возможно, что это имеет значение, но параллельно с этим скриптом у меня работает скрипт автоматической подстановки текущей даты. Если необходимо - могу отправить! Спасибо большое за участие! |
Цитата:
убрать такое поведение можно модулем на разнице двух дат: // было var diff = date2 - date1; // стало var diff = Math.abs(date2 - date1); |
melky,
Спасибо огромное! Все заработало! |
kover-samolet,
потому что в начале месяц потом день потом год var date1 = new Date("12/29/2014"); var date2 = new Date("1/3/2015"); var diff = date2 - date1; var milliseconds = diff; var seconds = milliseconds / 1000; var minutes = seconds / 60; var hours = minutes / 60; var days = hours / 24; alert(days); alert(Math.ceil(days)); |
нашёл скрипт
<script type="text/javascript"><!-- var d = new Date(); var month=new Array("января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"); document.write(d.getDate()+ " " + month[d.getMonth()] + " " + d.getFullYear() ); // --></script> как из текущей даты отнять день ,куда надо вставить - 24*60*60*1000 |
var d = new Date( new Date()-24*60*60 ); |
Цитата:
|
Часовой пояс GMT +3, время: 15:19. |