本月的第N天

时间:2014-03-21 16:41:07

标签: jquery javascript momentjs moment-recur

我使用momentjs插件moment-recur在客户端应用程序中创建和操作重复日期。我能够创建所有类型的重复日期(每日,每月,每年),但无法弄清楚如何为每月的第N天创建重复日期。即9月的第一个星期五。

我已经能够为本月的第N周生成一个周期性的日期,但是从周六开始的几个月,图书馆会跳到下一年,当我需要它返回以下星期五时周。您可以看到2012年9月的第1个星期五是第7个月,但是自星期六前一周开始的那个月以来,它使用以下代码确定没有星期五:

var start, end;
start = '09/05/1986';
end = '09/05/2014';

var date = moment(start);

//date.day() == 5, which results in Friday
var occurence = date.recur(end).every(date.day()).dayOfWeek();

//date.monthWeek() == 1, 1st week of the month THIS is where the problem lies
occurence = occurence.every(date.monthWeek()).weekOfMonth();

//September
occurence = occurence.every(date.format("MMMM")).monthOfYear();

console.log(occurence.next(50, 'L'));

打印

..." 09/03/2010"," 09/02/2011"," 09/06 / 2013"," 09 / 05/2014" ...跳过2012

JSFiddle Example

有没有人知道如何使用moment-recur或任何其他JS库生成一个月的第N天的重复日期?

1 个答案:

答案 0 :(得分:1)

https://github.com/jakubroztocil/rrule似乎很容易。请参阅https://jakubroztocil.github.io/rrule/进行测试:

  • 九月的第一个星期五是

    rule =  new RRule({ freq: RRule.YEARLY,
                        byweekday: RRule.FR,
                        bymonth: [9],
                        bysetpos: [1]
    })