moment.js,获取两个日期间的所有日期

enumerateDaysBetweenDates(startDate, endDate) {
    let daysList = [];
    daysList.push(
      moment(startDate).format("MM-DD dddd"),
      moment(endDate).format("MM-DD dddd")
    );
    // 。。。。
    return daysList;
  }
阅读 8.8k
2 个回答
const enumerateDaysBetweenDates = (startDate, endDate) => {
      let daysList = [];
      const start = moment(startDate);
      const end = moment(endDate);
      const day = end.diff(start, "days");
      daysList.push(start.format("MM-DD dddd"));
      for (let i = 1; i <= day; i++) {
        daysList.push(start.add(1, "days").format("MM-DD dddd"));
      }
      return daysList;
    };
    
 enumerateDaysBetweenDates('2021-06-09','2021-07-09')
enumerateDaysBetweenDates=function(startDate, endDate) { // 假定你已经保证了startDate 小于endDate,且二者不相等
        let daysList = [];
        let SDate=moment(startDate);
        let EDate=moment(endDate);
        let xt;
        daysList.push(SDate.format("MM-DD dddd"));
        while( SDate.add(1,"days").isBefore( EDate) ){  // 注意这里add方法处理后SDate对象已经改变。      
            daysList.push( SDate.format("MM-DD dddd") );
        } 
        daysList.push( EDate.format("MM-DD dddd") );
        return daysList;
  }
console.log( enumerateDaysBetweenDates('2021-06-09','2021-06-12'))
console.log( enumerateDaysBetweenDates('2021-06-09 23:00','2021-06-12 01:00'))
console.log( enumerateDaysBetweenDates('2021-06-09 13:00','2021-06-12 21:00'))

此外还可以考虑 https://github.com/rotaready/... 中的moment-range 专用插件来处理范围问题。

前面理解错了moment.js 中add方法应用情况,它是会改变原moment对象的!!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏