我正在处理两个日期,例如29/03/2014
和04/04/2014
,我有一系列日期,例如01/04/2014
和02/04/2014
,我需要找出该数组中有多少(如果有的话)日期在日期范围之间。
最好的方法是什么?
编辑:最终代码,从ponciste的回答中稍微调整一下
//date1 and date2 are the start/end dates
bhDays = new Array();
$.each(DataBridge.bankHolidays, function(i, v) {
var americanDate = v.split('-');
americanDate = americanDate[1] + '/' + americanDate[0] + '/' + americanDate[2];
date = new Date(americanDate);
if (date1 <= date && date2 >= date) {
bhDays.push(date);
}
});
答案 0 :(得分:1)
在这种情况下最好处理Date对象
所以你的代码应该是这样的:
var strDateFrom = "29/03/2014";
var strDateTo = "04/04/2014";
var dateFrom = strDateFrom.split("/");
var dateTo = strDateTo.split("/");
var dates = ["01/04/2014", "02/04/2014"];
var from = new Date(dateFrom[2], dateFrom[1]-1, dateFrom[0]);
var to = new Date(dateTo[2], dateTo[1]-1, dateTo[0]);
dates.forEach(function(date) {
var dateToCheck = new Date(date[2], date[1]-1, date[0]);
if(dateToCheck > from && dateToCheck < to)
});
答案 1 :(得分:0)
Date object会做你想要的 - 为每个日期构建一个,然后使用常用的运算符进行比较。
构造您的日期对象并使用&lt;进行比较|| &GT;运营商。
答案 2 :(得分:0)
我强烈建议使用 moment.js 库(以及所有其他日期/时间操作)并使用difference函数。