Вычитание дат в 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, время: 09:39. |