Вход

Просмотр полной версии : Количество дней между 2мя datapicker(ами)


SeGun
29.01.2013, 20:52
Здравствуйте уважаемые.
Делаю первые шаги в jawascript.

По существу:
Имеется datapicker и datapicker2
отображают дату в формате dd/mm/yy

Подскажите как подсчитать разниц между датами в днях и вывести
её в ячейку таблицы?
Такой код, не всегда даёт правильный результат.

function Count_Diff(d1, d2)
{
var date_1 = new Date(parseInt(20+(d1.substr(6, 2)), 10), parseInt(d1.substr(3, 2), 10), parseInt(d1.substr(0, 2), 10));
var date_2 = new Date(parseInt(20+(d2.substr(6, 2)), 10), parseInt(d2.substr(3, 2), 10), parseInt(d2.substr(0, 2), 10));
return ((date_2-date_1)/86400000);
}

devote
29.01.2013, 21:38
function getDays(dt1, dt2) {
function parse(dt) {
return dt.replace(/(\d+)\/(\d+)\/(\d+)/, function(all, a, b, c){
return (c < 100 ? +c + 2000 : c) + '/' + (+b - 1) + '/' + a;
});
}
var outDT1 = (new Date(Date.UTC.apply(null, parse(dt1).split('/')))).getTime();
var outDT2 = (new Date(Date.UTC.apply(null, parse(dt2).split('/')))).getTime();
return ( outDT1 > outDT2 ? outDT1 - outDT2 : outDT2 - outDT1) / 1000 / 60 / 60 / 24;
}

alert(getDays('01/01/13', '28/2/2013')); // разница 58 дней

SeGun
30.01.2013, 03:45
Работает :) Спасибо.
Вот только, насколько реально в таком представлении сравнивать даты,
если скажем по ошибке человек ввел начальную дату старше конечной?

devote
30.01.2013, 08:36
если скажем по ошибке человек ввел начальную дату старше конечной?
а вы проверьте, или делайте исключение в этой строчке:
return outDT1 > outDT2 ? 0 : ((outDT2 - outDT1) / 1000 / 60 / 60 / 24); всегда выведет ноль если начальная больше конечной

SeGun
30.01.2013, 09:40
Ещё раз спасибо.

Можно ещё попытаться обработать, наподобе такого:
Datepicker2.MinDate=Datepicker.selected.date+1

погрызу jqwery...

SeGun
03.02.2013, 21:31
Пока не знаю как должен выглядеть окончательный вариант кода

http://forum.jquery.com/topic/datepicker-set-mindate-of-second-datepicker-on-selection-changed-on-date-picker-1#14737000000961170

SeGun
04.02.2013, 05:52
http://jqueryui.com/datepicker/#date-range
:)

SeGun
17.02.2013, 19:19
<script>
$(function() {
$( "#from" ).datepicker({
changeMonth: true,
numberOfMonths: 2,
minDate: "today",
onClose: function( selectedDate ) {
var day1 = $("#from").datepicker('getDate').getDate()+1;
var month1 = $("#from").datepicker('getDate').getMonth()+1;
var year1 = $("#from").datepicker('getDate').getFullYear();
var nDate = year1+ "," + month1 + ","+day1;
nDate = new Date(nDate);
$( "#to" ).datepicker( "option", "minDate", nDate);
}
});
$( "#to" ).datepicker({
defaultDate: "+1d",
changeMonth: true,
numberOfMonths: 2,
onClose: function( selectedDate ) {
$( "#from" ).datepicker( "option", "maxDate", selectedDate );
}
});
});
</script>
</head>
<body>

<label for="from">From</label>
<input type="text" id="from" name="from" />
<label for="to">to</label>
<input type="text" id="to" name="to" />