javascript - moment.js – 获取数组的下一个现有日期

标签 javascript momentjs

我有一个包含不同日期的数组:

let days = ["2018-09-02", "2018-10-06", "2018-10-12", "2018-10-24", "2018-11-02", "2018-11-04"];

如何检测哪一天是 future 距离今天最近的一天?

我当前的状态可以检测明天是否在数组中,但我不知道当明天不存在时如何获取 future 最近的一天。

let nextDay = day.add(1, 'days').format('YYYY-MM-DD');

for (let i = 0; i < days.length; i++) {
  if (day[i] === nextDay) {
    // next day is part of the array
    console.log(nextDay);
  } 
}

最佳答案

一种可能是从当前日期中减去每个日期,看看哪个日期是距离正天数最少的日期。

示例:

let days = ["2018-09-02", "2018-10-06", "2018-10-12", "2018-10-30", "2018-11-02", "2018-11-04", "2019-01-01"];
let curDay = moment().format('YYYY-MM-DD');
let closestDay;
let closestDiff;
for (let i = 0; i < days.length; i++) {
  let diff = moment(days[i]).diff(curDay, 'days'); 
  if(diff > 0){
    if(closestDiff === undefined) {
      closestDay = days[i];
      closestDiff = diff;
    } else if(diff < closestDiff) {
      closestDay = days[i];
      closestDiff = diff;
    }
  }
}
if(closestDay === undefined) closestDay = "no days found in the future";
document.getElementById("closest-future").innerHTML = closestDay;
<!DOCTYPE html>
<html>

  <head>
    <script data-require="moment.js@2.14.1" data-semver="2.14.1" src="https://npmcdn.com/moment@2.14.1"></script>
  </head>

  <body>
    <div>Shortest date in the future is: <span id='closest-future'></span></div>
  </body>

</html>

关于javascript - moment.js – 获取数组的下一个现有日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53117374/

相关文章:

javascript - 自定义 Backbonejs 路由参数

javascript - moment-timezone 解析给定的时区

javascript - 使用 moment 比较提供的日期是否是今天

javascript - 我正在尝试使用 momentjs 将变量转换为日期

javascript - 将javascript添加到wordpress页面

javascript - 访问评论

javascript - console.trace 或堆栈跟踪来查明 javascript 中错误的来源?

javascript - 使用 Babel CLI 编译 React

javascript - 使用 moment.js 进行每周调度

javascript - 在 AngularJS Controller 中获取带有 moment-timezone 的时区名称列表