Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Количество дней между 2мя datapicker(ами) (https://javascript.ru/forum/dom-window/35073-kolichestvo-dnejj-mezhdu-2mya-datapicker-ami.html)

SeGun 29.01.2013 20:52

Количество дней между 2мя datapicker(ами)
 
Здравствуйте уважаемые.
Делаю первые шаги в 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

Цитата:

Сообщение от SeGun
если скажем по ошибке человек ввел начальную дату старше конечной?

а вы проверьте, или делайте исключение в этой строчке:
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/datepi...37000000961170

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" />


Часовой пояс GMT +3, время: 20:08.