查找日期是否是今天Momentjs的下一个有效日期

时间:2015-04-21 09:46:11

标签: javascript date momentjs

这是一个直接的问题,但我找不到合适的解决方案。给定一系列日期,即
['2015-01-01', '2015-04-20', ...]

有没有办法检查数组的项目是否是今天之后的下一个有效日期?
我正在使用moment.js

2 个答案:

答案 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