如何在每个月的第31天(或30日或29日)为每个月复发的事件指定一个事件的套期,如果月份没有足够的天数则选择最接近的事件(即2月它会选择28日或29日,四月会选择第30名)?
从技术上讲,我正在使用rrule javascript库,如果这是相关的.
要添加上下文,我有一个表单,用户可以指定开始日期重复(每年,每月,每周,每天),就像账单一样.如果账单通常在30日到期,那么在2月将到期,这将是28日(或29日).
无论是 28 日、29 日、30 日还是 31 日,RRULE获取“一个月的最后一天”的最简单方法是:
FREQ=MONTHLY;BYMONTHDAY=-1
Run Code Online (Sandbox Code Playgroud)
您的查询听起来像是您所追求的。
但是,我不知道您提到的 rrule javascript 库是否支持此功能。
有一个新的扩展RRULE要求RSCALE覆盖该案例.不幸的是,它还没有被广泛支持.不确定您正在使用的Javascript rrule库,但如果不是这样,您应该打开一个问题.
使用RSCALE扩展你RRULE会看起来像这样:
FREQ=MONTHLY;RSCALE=GREGORIAN;BYMONTHDAY=31;SKIP=BACKWARD
Run Code Online (Sandbox Code Playgroud)
RRULE每个月每31日复发一次的事件,除非那天不存在,否则SKIP=BACKWARD说"使用前一个有效日".
编辑
我刚刚意识到另一种表达方式,没有RSCALE:
FREQ=MONTHLY;BYMONTHDAY=28,29,30,31;BYSETPOS=-1
Run Code Online (Sandbox Code Playgroud)
FREQ=MONTHLY;BYMONTHDAY=28,29,30;BYSETPOS=-1
Run Code Online (Sandbox Code Playgroud)
FREQ=MONTHLY;BYMONTHDAY=28,29;BYSETPOS=-1
Run Code Online (Sandbox Code Playgroud)
但是,正如人们可以看到的那样,这显然更为直观RSCALE.
| 归档时间: |
|
| 查看次数: |
1462 次 |
| 最近记录: |