Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.01.2013, 20:52
Аспирант
Отправить личное сообщение для SeGun Посмотреть профиль Найти все сообщения от SeGun
 
Регистрация: 29.01.2013
Сообщений: 43

Количество дней между 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);
}
Ответить с цитированием
  #2 (permalink)  
Старый 29.01.2013, 21:38
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

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 дней
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 30.01.2013, 03:45
Аспирант
Отправить личное сообщение для SeGun Посмотреть профиль Найти все сообщения от SeGun
 
Регистрация: 29.01.2013
Сообщений: 43

Работает :) Спасибо.
Работает Спасибо.
Вот только, насколько реально в таком представлении сравнивать даты,
если скажем по ошибке человек ввел начальную дату старше конечной?
Ответить с цитированием
  #4 (permalink)  
Старый 30.01.2013, 08:36
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от SeGun
если скажем по ошибке человек ввел начальную дату старше конечной?
а вы проверьте, или делайте исключение в этой строчке:
return outDT1 > outDT2 ? 0 : ((outDT2 - outDT1) / 1000 / 60 / 60 / 24);
всегда выведет ноль если начальная больше конечной
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #5 (permalink)  
Старый 30.01.2013, 09:40
Аспирант
Отправить личное сообщение для SeGun Посмотреть профиль Найти все сообщения от SeGun
 
Регистрация: 29.01.2013
Сообщений: 43

Ещё раз спасибо.
Ещё раз спасибо.

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

погрызу jqwery...
Ответить с цитированием
  #6 (permalink)  
Старый 03.02.2013, 21:31
Аспирант
Отправить личное сообщение для SeGun Посмотреть профиль Найти все сообщения от SeGun
 
Регистрация: 29.01.2013
Сообщений: 43

Погрыз... нашел хороший пример
Пока не знаю как должен выглядеть окончательный вариант кода

http://forum.jquery.com/topic/datepi...37000000961170
Ответить с цитированием
  #7 (permalink)  
Старый 04.02.2013, 05:52
Аспирант
Отправить личное сообщение для SeGun Посмотреть профиль Найти все сообщения от SeGun
 
Регистрация: 29.01.2013
Сообщений: 43

Пардон. Чуть глубже был рабочий пример.
http://jqueryui.com/datepicker/#date-range
Ответить с цитированием
  #8 (permalink)  
Старый 17.02.2013, 19:19
Аспирант
Отправить личное сообщение для SeGun Посмотреть профиль Найти все сообщения от SeGun
 
Регистрация: 29.01.2013
Сообщений: 43

Примерно так
<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" />
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить количество дней до определенной даты beard Общие вопросы Javascript 3 24.06.2012 17:22
Получить количество дней при вычитании дат Spinne Events/DOM/Window 18 28.10.2010 13:00