首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何排除RRule.js中的日期?

如何排除RRule.js中的日期?
EN

Stack Overflow用户
提问于 2020-06-23 11:07:21
回答 3查看 1.5K关注 0票数 3

可疑代码:

代码语言:javascript
复制
<script src="https://jakubroztocil.github.io/rrule/dist/es5/rrule.min.js"></script>
// Create a rule:
        const rule = new rrule.RRule({
            freq: rrule.RRule.DAILY,
            dtstart: new Date('{{ date('Y-m-d', strtotime($product->details->date_from . ' -1 day'))}}'),
            until: new Date('{{$product->details->date_to_1 ? date('Y-m-d', strtotime($product->details->date_to_1 . ' +1 day'))  : date('Y-m-d', strtotime($product->details->date_to . ' +1 day'))}}'),
        });

        rule.exdate(new Date("2020-06-25"));

控制台了解到:

代码语言:javascript
复制
TypeError: rule.exdate is not a function

但如果我们遵循官方指南RRule回购手册

我们可以观察到解决方案为:)

//在rruleSet rruleSet.exdate中添加一个排除日期(新日期(Date.UTC(2012、5、1、10、30)

我搞不懂我哪里错了?

提前谢谢。

致以敬意,

Aizaz

EN

回答 3

Stack Overflow用户

发布于 2020-08-07 06:40:29

代码语言:javascript
复制
const rruleSet = new RRuleSet();
rruleSet.rrule(
  new RRule({
    freq: RRule.DAILY,
    count: 5,
    dtstart: new Date("Aug 2020 10 10:30 am"),
  })
);
rruleSet.exdate(new Date("Aug 2020 12 10:30 am"));

在这里,它将不包括8月12日和回馈(10,11,13,14的8月)。

票数 2
EN

Stack Overflow用户

发布于 2020-10-21 04:25:53

RRuleSet是与RRule不同的对象。您将在RRuleSet对象上而不是在RRule上找到exdate。

  1. 创建一个RRuleSet
  2. 添加你的RRule
  3. 将您的排除添加到RRuleSet中
票数 1
EN

Stack Overflow用户

发布于 2022-04-21 17:26:13

EXDATE道具只能在RRuleSet中工作。因此,在包含rrule.js脚本之后,可以排除单个日期或多个日期,如下所示:

代码语言:javascript
复制
const RRuleSet = rrule.RRuleSet;
const rruleSet = new RRuleSet();

rruleSet.rrule(
  new RRule({
    freq: RRule.DAILY,
    count: 5,
    dtstart: new Date("2022-04-15"),
  })
);

rruleSet.exdate(new Date("2022-04-25"));

// Again add 'exdate()' to exclude another date
rruleSet.exdate(new Date("2022-04-28"));

之后,使用rruleSettoString()转换为字符串。

代码语言:javascript
复制
let rruleStr = rruleSet.toString();

因此,要检查递归,首先应该使用rruleStr将字符串转换为使用rrulestr()的对象,而不是使用all()before()after()between()检索方法来迭代规则:

代码语言:javascript
复制
let ruleSetObj = rrule.rrulestr(rruleStr);
let ruleNextOccurrence = ruleSetObj.after(new Date('2022-04-25'), true);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62533315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档