【问题标题】:Parsing RRule results wrong occurrences for this specific case解析 RRule 会导致此特定情况出现错误
【发布时间】:2017-12-19 13:26:23
【问题描述】:

每日和每月重复的最后一个实例未正确获取,而同一案例适用于每周重复。 我已经在数据库中保存了事件的重复模式,但是当我从数据库中获取并设置事件属性并调用 event.GetOccurrences() 时。我有 8 月 1、2、3、4 日的事件,但是当解析规则时(即在调用 event.GetOccurrences() 之后)它给出了 4 个实例,其中 1 月 8 日重复了两次,所以我们在 8 月 1、1、2、3 日发生了错过了 8 月 4 日。

For Daily recurring meeting 
FREQ=DAILY;COUNT=4;BYHOUR=13;BYMINUTE=30;BYSECOND=0

上述模式给出的实例为 1 Aug、1 Aug、2 Aug、3 Aug,给出了 4 个实例,但 8 月 4 日错过了,8 月 1 日重复了两次,之后我在这些实例中设置了时间。

For Weekly recurring meeting 
FREQ=WEEKLY;COUNT=4

当上述模式由相同的函数解析时,它会给出 4 个正确日期的实例,然后我从 DB 中为这些事件设置时间。

【问题讨论】:

  • This(FREQ=DAILY;COUNT=4;BYHOUR=13;BYMINUTE=30;BYSECOND=0) 是当我将出现次数设置为 4 时从 iCloud 获得的模式。但如果我设置模式为 FREQ=DAILY;COUNT=4;然后解析它给出正确的日期。我可以知道 event.GetOccurrences() 是如何工作的,即它寻找什么来创建事件?

标签: icalendar webdav caldav ical-dotnet


【解决方案1】:

我已经做了一个解决方法。我已按小时、分钟和秒重置。

RecurrencePattern recurringPattern = new RecurrencePattern(recurringRule);
if (recurringPattern.Count > 0)
{
    recurringPattern.ByHour = new List<int>();
    recurringPattern.ByMinute = new List<int>();
    recurringPattern.BySecond = new List<int>();
}
calendarEvent.RecurrenceRules.Add(recurringPattern);

【讨论】:

    猜你喜欢
    • 2016-06-25
    • 1970-01-01
    • 2022-01-26
    • 2010-11-14
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多