Fullcalendar 重复事件被转移到前一天

Fullcalendar recurring event is shifted for the day before

这就是我们目前的情况。用户位于太平洋时区并希望创建重复事件:

Fullcalendar timeZone 设置为 'local',我们正在将时间转换为 UTC。因此,当我们转换用户输入时,我们创建了这样的规则对象:

"rrule": {
    "freq": 2,
    "interval": 1,
    "byweekday": [
        0,
        3
    ],
    "dtstart": "2021-11-23T02:30:00Z",
    "until": "2021-11-30T04:30:00Z"
}

但是活动被推迟了一天:活动在周日和周三重复,而不是周一和周四。

当我们创建 PT 时间和 UTC 时间为 'in the same day' 的事件时(例如从下午 3 点到下午 4 点),一切都很好。

此外,当我们创建从 6:30pm 到 8:30pm 的非重复事件时,一切都很好。

Fullcalendar 版本为 5.9.0,rrule 版本为 2.6.8。

我们还缺少什么?

您已指定事件在指定日期范围内的每个星期一和星期四 02:30:00Z 发生。

请注意,这是 UTC 时间的星期一和星期四。

在太平洋时间,02:30:00Z 是前一天 18:30:00。因此,在 UTC 时间的星期四早上重复发生的事件实际上将在太平洋时间的星期三晚上发生。

根据给定的数据,fullCalendar 所做的是完全正确和合乎逻辑的。

我认为您的问题可能在于,当您从用户收到此重复事件请求并将日期和时间转换为 UTC 时,您没有考虑时区是否也发生了变化逻辑上影响指定的重复天数。例如我假设在上述情况下,您希望将重复日期提前一天,因为 UTC 转换会导致时间转移到第二天。

这取决于您希望它如何工作,显然我目前看不到您如何进行转换过程,所以我不得不将实现细节留给您。