【问题标题】:How to get recurring dates using moment如何使用时刻获取重复日期
【发布时间】:2018-11-07 07:41:22
【问题描述】:

在我的场景中,我有一个开始日期和结束日期

const startDate = 2018-11-07  // YYYY-MM-DD format and it is Wednesday

const endDate = 2018-12-01

我从 UI 获得一个标志,其中需要从开始日期到结束日期每周重复一次事件

如何获取该范围内的活动日期?

预期结果约为["2018-11-07", "2018-11-14", .... ,"2018-11-28"]

【问题讨论】:

标签: javascript node.js reactjs momentjs


【解决方案1】:

您可以简单地使用官方的时刻插件moment-range

const Moment = require('moment');
const MomentRange = require('moment-range');
const moment = MomentRange.extendMoment(Moment);

const range = moment.range(moment('2018-11-07'), moment('2018-12-01'));

console.log(Array.from(range.by('week')))

输出:

[ moment("2018-11-07T00:00:00.000"),
  moment("2018-11-14T00:00:00.000"),
  moment("2018-11-21T00:00:00.000"),
  moment("2018-11-28T00:00:00.000") ]

【讨论】:

    【解决方案2】:

    你可以像 Akrion 提到的那样使用moment-range

    但是您可以简单地制作自己的辅助方法。

    拿去吧:

    const moment = require('moment');
    
    const generateDateRange = (from, to, step = 1, modifier = 'day', format = 'YYYY-MM-DD') => {
      const dates = [];
    
      let currentDate = moment(from);
      const lastDate = moment(to);
    
      while(currentDate <= lastDate) {
        dates.push(currentDate.format(format));
        currentDate = currentDate.add(step, modifier);
      }
    
      return dates;
    }
    
    
    const dates = generateDateRange('2018-11-07', '2018-12-01', 1, 'week');
    console.log(dates);
    

    测试here

    【讨论】:

      猜你喜欢
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      • 2018-10-30
      相关资源
      最近更新 更多