r规则,用于每月在 31 日或最近一天重复
rrule for repeating monthly on the 31st or closest day
您将如何为每月第 31 天(或 30 日或 29 日)的每个月重复发生的事件指定 rrule,如果该月没有足够的天数,它会选择最接近的(即 2 月它会选择 28 日或 29 日,4 月它会选择 30 日)?
从技术上讲,如果相关,我正在使用 rrule javascript 库。
为了添加上下文,我有一个表单,用户可以在其中指定重复周期(每年、每月、每周、每天)的开始日期,例如账单。 如果账单通常在 30 日到期,那么在 2 月它将在 28 日(或 29 日)到期。
RRULE
有一个名为RSCALE
的新扩展名来涵盖这种情况。不幸的是,它还没有得到广泛的支持。不确定您正在使用的 Javascript rrule 库,但如果不是这种情况,您应该打开一个问题。
使用 RSCALE
扩展名,您的RRULE
如下所示:
FREQ=MONTHLY;RSCALE=GREGORIAN;BYMONTHDAY=31;SKIP=BACKWARD
具有此RRULE
的事件在每个月的 31 日重复发生,除非该日期不存在,在这种情况下SKIP=BACKWARD
说"使用前一个有效日期"。
编辑
我刚刚意识到另一种表达方式,无需RSCALE
:
每月 31 日,回退到该月最后一个有效日期:
FREQ=MONTHLY;BYMONTHDAY=28,29,30,31;BYSETPOS=-1
每月 30 日,2 月回落到 28 日或 29 日(闰年)
FREQ=MONTHLY;BYMONTHDAY=28,29,30;BYSETPOS=-1
每月29日,非闰年回落至2月28
日FREQ=MONTHLY;BYMONTHDAY=28,29;BYSETPOS=-1
但是,正如人们所看到的,这显然更直观 RSCALE
.
无论它是在 28 日、29 日、30 日还是 31 日,获取"每月的最后一天"的最简单RRULE
是:
FREQ=MONTHLY;BYMONTHDAY=-1
您的查询听起来就像这就是您所追求的。
但是,我不知道您提到的 rrule javascript 库是否支持这一点。
相关文章:
- 在JavaScript中重构上个月的第一天和最后一天的代码(node.js)
- 制作Easing Slider Start横幅取决于一周中的哪一天
- moment.js被一天的发行量抵消
- 在一天中的某个时间自动在我的网站上播放视频
- 如何将完整日历事件限制为仅一天
- 基于一天中的时间的不均匀计数计时器Jquery
- 如果今天是会计年度的最后一天,请从下拉菜单中删除当前年份
- 完整日历 - 如何在周视图中添加一天中的时间
- AngularJS引导日期选择器 - 每周的一天问题
- 根据一天中的时间更改滑块
- 如何使用jquery获取下一天的日期和下个月的日期
- 为什么new Date()会删除一天?-Javascript
- 在FullCalendar中单击一天获取事件
- javascript创建减去一天的新日期
- Javascript和图像更改,基于一天中的时间
- 从'获取本月的最后一天;2015-02-23'字符串(javascript)
- 当日期在不同月份时,如何获取本周的第一天和最后一天
- 使用crossfilter和dc.js绘制每一天的最小-最大值
- 根据一天中的时间更改图像
- r规则,用于每月在 31 日或最近一天重复