如果设置了dtstart,则规则未设置正确的时间

时间:2019-02-04 13:24:18

标签: reactjs rrule

我尝试创建一个rrule实例,然后设置开始日期/时间(dtstart),但是事件得到的时间错误。

  1. 我使用基本rrule字符串初始化rrule实例: RRULE:FREQ=WEEKLY;INTERVAL=1;WKST=MO;COUNT=20
  2. 我在rrule.options中设置dtstart日期,如下所示: rrule.options.dtstart = new Date(Date.UTC(2019, 1, 4, 12, 30, 0))
  3. 我console.log rrule.all()来查看生成的事件。现在,所有事件都具有当前时间,而不是通过dtstart设置的时间。它应该改为显示12:30

我做了这个sandbox来说明问题。

现在,当我在rrule.js demo page中执行完全相同的操作时,我得到正确的结果。 在此演示页面上,执行以下操作以了解我的意思: enter image description here

这些是结果:

enter image description here

如您所见,事件的时间设置正确!

任何建议表示赞赏!

1 个答案:

答案 0 :(得分:2)

找到答案:

如果在构造函数中显式设置distart,则此问题已解决。

比较以下示例:

示例一:给出正确的结果:

const rrule = new RRule({
  freq: RRule.WEEKLY, 
  interval: 1, 
  wkst: RRule.MO, 
  count: 20,
  dtstart: new Date(Date.UTC(2019, 1, 4, 12, 30, 0))})

示例二:给出错误的结果

const rrule = new RRule({
  freq: RRule.WEEKLY, 
  interval: 1, 
  wkst: RRule.MO, 
  count: 20})
rrule.options.dtstart = new Date(Date.UTC(2019, 1, 4, 14, 30, 0));

对我来说,这看起来有点直觉,因为无论您在构造函数中进行设置还是之后进行设置,设置dtstart都应始终提供相同的结果。