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

How many days fall in a set of date ranges based on a date range

用户输入日期范围,例如:

自:2015 年 1 月 4 日 至:2015 年 1 月 12 日

我定义了一些时间段,例如:

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

我想知道有多少天:

第 1 期之前

第 1 期之后(或等于)第 2 期之前

第 2 期之后(或等于)

我想使用 javascript 解决这个问题。我正在制作一个计算器,可以计算出基于不同日期范围的预订费用。

感谢您的帮助, 大卫

如果您要处理日期,我强烈建议您使用 moment.js。 http://momentjs.com/ Based on what you're asking for, I'd recomment starting here: http://momentjs.com/docs/#/displaying/from/ or http://momentjs.com/docs/#/displaying/difference/

这看起来可以按照您需要的方式工作。 (我假设天数 before/after 期间指的是日期所在的年份)。

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>