这是一个直接的问题,但我找不到合适的解决方案。给定一系列日期,即
['2015-01-01', '2015-04-20', ...]
有没有办法检查数组的项目是否是今天之后的下一个有效日期?
我正在使用moment.js
。
答案 0 :(得分:2)
[...]有没有办法检查阵列中的项目是否是今天之后的下一个有效日期?
您的描述对我来说并不是很清楚,但听起来您正试图以编程方式确定日期数组是否包含明天的日期(即“今天之后的下一个有效日期”)。在这种情况下,请继续阅读:
首先,使用moment.js以与数组中字符串相同的格式获取明天的日期:
var tomorrow = moment().add(1, 'days').format('YYYY-MM-DD');
现在,您可以循环遍历数组,并使用tomorrow
或==
将每个值与===
进行比较(在这种情况下无关紧要):
dates.forEach(function(date) {
if (date == tomorrow) {
// Bingo!
}
});
如果您只是想检查数组中的任何日期是否是明天的日期,请使用Array#some
:
var containsTomorrow = dates.some(function(date) {
return date == tomorrow;
});
答案 1 :(得分:1)
这实际上可以在不使用momentjs的情况下解决
var todaysDate = new Date();
var min;
var index;
var array = ['2015-01-01', '2015-04-20', ...];
for (var i = 0; i < array.length; i++) {
var inputDate = new Date(array[i]);
var ts = inputDate - todaysDate;
if (!min || (ts < min && ts > 0) ) {
min = ts;
index = i;
}
}
// index will contain the index of the nearest next date