You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS:如何通过JSON API创建带排除日期的重复日历事件

处理日历重复事件的排除日期:创建与获取方案

一、优化创建重复事件的方案(替代先建再删)

你之前想先创建重复事件再删除指定实例的思路其实可以更高效——直接在创建事件时就把排除日期整合到重复规则里,避免额外的删除API调用。

针对每周周末重复但需排除部分周末的场景,在JSON请求体里需要配置两个核心字段:

  • 定义基础重复规则(recurrence):
    "recurrence": [
      "RRULE:FREQ=WEEKLY;BYDAY=SA,SU"
    ]
    
  • 添加排除日期规则(exdate),格式为EXDATE:YYYYMMDD,多日期用逗号分隔:
    "exdate": [
      "EXDATE:20240518,20240519",
      "EXDATE:20240601,20240602"
    ]
    

这样创建的事件会自动跳过指定周末,无需后续删除操作。

二、通过API获取已存在事件的排除日期

要获取某个重复事件的排除日期,只需调用单事件查询API,返回的JSON数据里会包含exdate字段,直接解析即可。

对应你的Objective-C代码,可以这样处理:

// 假设已获取到事件的JSON字典dicEvent
NSArray *exdateArray = dicEvent[@"exdate"];
if (exdateArray && exdateArray.count > 0) {
    for (NSString *exdateStr in exdateArray) {
        // 剥离EXDATE前缀,提取日期部分
        NSString *datesPart = [exdateStr stringByReplacingOccurrencesOfString:@"EXDATE:" withString:@""];
        NSArray *excludeDates = [datesPart componentsSeparatedByString:@","];
        for (NSString *dateStr in excludeDates) {
            // 可根据需求将dateStr转换为NSDate或其他格式
            NSLog(@"排除日期:%@", dateStr);
        }
    }
}

这段代码会把返回的exdate字段拆分为单个日期字符串,方便后续业务处理。

补充:先建再删方案的排除日期获取逻辑

如果坚持先创建重复事件再删除指定实例,删除操作后,被移除的实例会自动加入事件的exdate列表,你依然可以用上面的方法获取这些排除日期。不过这种方式多了一次API调用,效率不如直接在创建时指定exdate。

内容的提问来源于stack exchange,提问作者blackcat1323

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:20:57