簡體   English   中英

Fullcalendar 重復事件轉移到前一天

[英]Fullcalendar recurring event is shifted for the day before

這就是我們現在的情況。 用戶位於太平洋時區並希望創建重復事件:

  • 開始日期:2021 年 11 月 22 日
  • 結束日期:2021 年 11 月 29 日
  • 開始時間:下午 6:30
  • 結束時間:8:30 PM
  • 重復日:周一、周四
  • 頻率:每周

Fullcalendar 時區設置為“本地”,我們將時間轉換為 UTC。 因此,當我們轉換用戶輸入時,我們創建了這樣的規則 object:

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

但是事件被推遲了一天:事件在周日和周三重復,而不是周一和周四。

在此處輸入圖像描述

當我們創建 PT 時間和 UTC 時間“在同一天”(例如從下午 3 點到 4 點)的事件時,一切都很好。

在此處輸入圖像描述

此外,當我們從下午 6:30 到晚上 8:30 創建非重復事件時,一切都很好。

Fullcalendar 版本為 5.9.0,規則版本為 2.6.8。

我們缺少什么?

您已指定事件在指定日期范圍內的每周一和周四凌晨02:30:00Z發生。

請注意,這是UTC時間的星期一和星期四。

在太平洋時間, 02:30:00Z是前一天的18:30:00 因此,在 UTC 時間的星期四早上再次發生的事件實際上將在太平洋時間的星期三晚上發生。

根據給出的數據,fullCalendar 所做的事情是完全正確和合乎邏輯的。

我認為您的問題可能出在哪里,當您收到用戶的此重復事件請求並將日期和時間轉換為 UTC 時,您沒有考慮該時區更改是否在邏輯上也會影響重復天數指定的。 例如,我假設在上述情況下,您希望將重復日期提前一天,因為 UTC 轉換會導致時間轉移到第二天。

這取決於您希望它如何工作,顯然我目前看不到您如何進行轉換過程,因此我將不得不將實現細節留給您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM