2013-08-21 2 views
1

Я знаю, что этот вопрос задан раньше, но я не мог найти ничего близкого к тому, что я пытаюсь сделать. Я использую jQuery Datepicker http://keith-wood.name/datepick.html и используя диапазон с 2-мя календарями. В моем приложении у меня есть услуга, на которую я беру плату за 1 день. То, что я хочу сделать, - предложить конечному пользователю диапазон дат, чтобы выбрать, сколько дней они хотели бы купить, и показать им общее количество. Чтобы начать работу, я просто хочу знать, как рассчитать количество дней, выбранных в диапазоне.рассчитать количество дней в подборщике диапазона javascript

Вот мой код:

<?php 
// this has the css and javascript includes 
include('includes/header.php'); 
?> 
<div class="container"> 
<div class="row"> 
<div class="span3"></div> 
<div class="span9"> 
    <form> 
    <div class="controls"> 
    <input id="range2Picker" name="range2Picker" value="" class="input-large" required="" type="text"> 
    </div> 
</form> 
</div> 
</div> 

</div> 

<script> 
$('#range2Picker').datepick({ 
    date1 = new Date(date1); 
    date2 = new Date(date2); 
    rangeSelect: true, 
    monthsToShow: 2, 
    changeMonth: false, 
    minDate: +3, 
    onClose: function(date1, date2) { 
     var timediff = date2 - date1; 
     alert('Number of days are: ' + timediff); 
    } 

}); 

</script> 

ответ

0

это дает разницу в Millis, превратить их в дни

var timeDiff = Math.abs(date2.getTime() - date1.getTime()); 
var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
alert(diffDays)​; 
1

ответы с участием Math.ceil становятся жертвами проблем вокруг летнего времени часов (летнее время). Например, в США:

Math.ceil((new Date("November 4, 2013").getTime() - 
      new Date("November 2, 2013").getTime())/(1000 * 3600 * 24)); //=> 3 

Math.floor будет иметь ту же проблему в Spring:

Math.floor((new Date("March 11, 2013").getTime() - 
      new Date("March 9, 2013").getTime())/(1000 * 3600 * 24)); // 1 

Лучше бы Math.Round:

var days = Math.round((1*date2 - 1*date1)/86400000, 0); 
+0

Я подозреваю, что он также нуждается в минимум 1 день, в случае date1 == date2 – Paul

+0

@Paul: Возможно, хотя, если это так, для него, вероятно, нужен плюс. (Итак, сегодня - вчера => 2.) Я недостаточно разбираюсь в бизнес-кейсе, но достаточно легко добавить в случае необходимости. –

Смежные вопросы