基于日期范围的一组日期范围中有多少天

时间:2015-03-16 18:58:23

标签: javascript jquery date-range

用户输入日期范围,如:

来自:01/04/2015 致:2015年12月1日

我有一些时期定义如下:

var period1 = '01/04/2015';
var period2 = '01/11/2015';

我想知道有多少天:

在第1期之前

在(或等于)期间1之后但在期间2之前

在(或等于)第2期之后

我想用javascript来解决这个问题。我正在制作一个计算器,根据不同的日期范围计算预订成本。

感谢您的帮助, 大卫

2 个答案:

答案 0 :(得分:1)

如果您正在使用日期,我强烈建议您使用moment.js。 http://momentjs.com/根据您的要求,我建议您从http://momentjs.com/docs/#/displaying/from/http://momentjs.com/docs/#/displaying/difference/

开始

答案 1 :(得分:1)

这看起来像你需要的那样工作。 (我假设期间之前/之后的日子指的是那个日期的年份。)

function getValues() {
  // Get the dates from the textboxes
  var period1Date = new Date($('#period1').val()); 
  var period2Date = new Date($('#period2').val());
  
  var firstDayOfYear = new Date('1/1/' + period1Date.getFullYear().toString());
  var lastDayOfYear = new Date('12/31/' + period2Date.getFullYear().toString());

  // Get days between first day of year and period 1 date
  var daysBeforePeriod1 = (firstDayOfYear - period1Date)/(1000*60*60*24);
  // Get days between last day of year and period 2 date
  var daysAfterPeriod2 = (lastDayOfYear - period2Date)/(1000*60*60*24);
  // Get days between period 1 and period 2 dates
  var daysBetween = (period1Date-period2Date)/(1000*60*60*24);
  
  // Set labels on screen
  $('#daysBefore1').text('Days Before Period 1: ' + Math.abs(daysBeforePeriod1).toString());
  $('#daysBetween').text('Days Between Periods: ' + Math.abs(daysBetween).toString());
  $('#daysAfter2').text('Days After Period 2: ' + Math.abs(daysAfterPeriod2).toString());
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Period 1: <input type="text" id="period1" value="01/04/2015"/>
<br><br>
Period 2: <input type="text" id="period2" value="01/11/2015"/>
<br><br>
<button type="button" onclick="getValues()">Get Values</button>
<br><br>
<label id="daysBefore1"></label>
<br>
<label id="daysBetween"></label>
<br>
<label id="daysAfter2"></label>