【问题标题】:RRule not setting correct time if dtstart is set如果设置了 dtstart,RRule 没有设置正确的时间
【发布时间】:2019-02-04 13:24:17
【问题描述】:

我尝试创建一个 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 中执行完全相同的操作时,我得到了正确的结果。 在此演示页面上,执行以下操作以了解我的意思:

这些是结果:

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

任何建议表示赞赏!

【问题讨论】:

    标签: reactjs rrule


    【解决方案1】:

    找到答案:

    如果你在构造函数中显式设置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 都应该始终给出相同的结果。

    【讨论】:

    • 谢谢你,你把我从我掉进的一个非常大的兔子洞里救了出来。
    • 非常感谢,应该记录在某处。
    猜你喜欢
    • 2014-01-18
    • 2016-03-08
    • 2021-03-26
    • 2013-05-01
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多