首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >规则和日常储蓄

规则和日常储蓄
EN

Stack Overflow用户
提问于 2019-03-17 15:24:23
回答 1查看 916关注 0票数 4

我使用规则在我的数据库中创建和存储事件。

一切都在进行,直到我发现我反复发生的事件在3月31日之后有一个小时的差异。

在法国,这是我们改变夏令时间的日子。

实际上,我的事件存储在mongo数据库中,其中包含事件的开始日期和持续时间,+事件规则(所有事件都不是重复事件)如下所示:

代码语言:javascript
复制
{
    "_id" : ObjectId("5c8e4706703df43859aabbe7"),
    "duration" : 2879,
    "type" : "unavailability",
    "title" : "Weekend",
    "description" : "C'est le weekend",
    "rrules" : [ 
        {
            "until" : ISODate("2021-03-22T23:00:00.000Z"),
            "dtstart" : ISODate("2019-03-11T23:00:00.000Z"),
            "byweekday" : [ 
                {
                    "weekday" : 5
                }, 
                {
                    "weekday" : 6
                }
            ],
            "interval" : 1,
            "freq" : 2
        }
    ],
    "__v" : 0
}

当前端搜索日历中的日期时,它将使用以下args进行搜索:

代码语言:javascript
复制
?from=2019-03-10T23:00:00.000Z&to=2019-03-17T23:00:00.000Z

这个日期运行得很好,因为两者之间没有夏时制。如果我有这个目标:

代码语言:javascript
复制
normalizedDates = { from: 2019-03-10T23:00:00.000Z, to: 2019-03-17T23:00:00.000Z }

这条规则是:

代码语言:javascript
复制
{ until: 2021-03-22T23:00:00.000Z,
  dtstart: 2019-03-11T23:00:00.000Z,
  byweekday: [ { weekday: 5 }, { weekday: 6 } ],
  interval: 1,
  freq: 2 }

跑步:

代码语言:javascript
复制
const recurringDays = rruleSet.between(normalizedDates.from, normalizedDates.to)

的确,显示:

代码语言:javascript
复制
recurringDays [ 2019-03-23T23:00:00.000Z ]

但如果你用:

代码语言:javascript
复制
normalizedDates = { from: 2019-03-31T22:00:00.000Z, to: 2019-04-07T22:00:00.000Z }

Rrules返回:

代码语言:javascript
复制
recurringDays [ 2019-03-31T23:00:00.000Z, 2019-04-06T23:00:00.000Z ]

当我期待:

代码语言:javascript
复制
recurringDays [ 2019-04-06T22:00:00.000Z ]

你知道我怎么处理这事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-18 17:28:35

如果希望使用重复规则来观察特定时区的夏时制,则必须使用此时区进行日程安排。在您的示例中,计划是基于UTC的。

RRule提供时区支持。您应该使用它,并指定tzid: 'Europe/Paris'

另外,您可以考虑使用toStringfromString函数来处理iCalendar格式的字符串,并将其存储在MongoDB实例中,而不是将RRule序列化为JSON。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55208658

复制
相关文章

相似问题

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