ICS 日历重复规则展开器

将带 RRULE 的 VEVENT 展开为具体 occurrence,并导出为 JSON 或展开后的 ICS 日历

粘贴完整 .ics 文本或单个 VEVENT 片段,然后把 RRULE 展开成具体事件实例。工具支持常见的 FREQ、INTERVAL、COUNT、UNTIL、BYDAY 与 BYMONTHDAY。

填写说明:

  • ICS 或 VEVENT 输入:直接粘贴日历文本
  • ICS 文件:上传 .ics 文件代替粘贴
  • 时区覆盖:可选,在导出的日历头部附加时区标签
  • 节假日日期:按 YYYY-MM-DD 每行一个,命中时会过滤该次 occurrence
  • 最大展开次数:当 RRULE 没有 COUNT 时的安全上限
  • 输出格式:返回 JSON、ICS,或同时返回两者

当前范围:

  • 只展开输入中的第一个 VEVENT
  • 支持 DAILY、WEEKLY、MONTHLY、YEARLY
  • 生成结果统一按 UTC 风格规范化

示例结果

1 个示例

展开每周团队日程规则

把带 BYDAY 的周重复 VEVENT 展开成明确的会议实例,并可跳过节假日。

{
  "result": {
    "occurrences": [
      {
        "start": "2026-04-01T09:00:00.000Z"
      }
    ]
  }
}
查看输入参数
{ "icsInput": "BEGIN:VEVENT\nDTSTART:20260401T090000Z\nDTEND:20260401T100000Z\nRRULE:FREQ=WEEKLY;BYDAY=MO,WE;COUNT=6\nSUMMARY:Team sync\nUID:team-sync-1\nEND:VEVENT", "timezoneOverride": "Asia/Shanghai", "holidayDates": "2026-04-08", "maxOccurrences": 20, "outputFormat": "both" }

Click to upload file or drag and drop file here

Maximum file size: 5MB Supported formats: text/calendar, text/plain, application/octet-stream, .ics

关键信息

分类
数学、日期与金融
输入类型
textarea, file, text, number, select
输出类型
json
样本覆盖
4
支持 API
Yes

概览

ICS 日历重复规则展开器是一款专为开发者和日程管理员设计的实用工具。它可以解析包含 RRULE(重复规则)的 VEVENT 文本或 .ics 文件,将复杂的重复逻辑(如按周、按月重复)自动展开为具体的日期实例。支持自定义时区、过滤特定节假日,并可将结果导出为结构化的 JSON 数据或扁平化的 ICS 日历文件,方便后续的数据处理与系统集成。

适用场景

  • 需要将复杂的 ICS 重复日程(RRULE)转换为具体的日期列表以便在自建系统中展示时。
  • 跨时区同步日历数据,需要统一附加特定时区标签并规范化为 UTC 格式时。
  • 提取日程实例时需要自动跳过法定节假日或特定休息日时。

工作原理

  • 粘贴包含 VEVENT 的 ICS 文本,或直接上传 .ics 日历文件。
  • (可选)设置时区覆盖、输入需要排除的节假日日期(YYYY-MM-DD),并调整最大展开次数以防无限循环。
  • 选择输出格式(JSON、ICS 或两者兼有),工具将解析第一个 VEVENT 的 RRULE 并生成具体的日程实例。

使用场景

研发团队解析第三方日历订阅源,将重复会议数据落库到内部的排班系统中。
销售团队导出包含每周例会的 ICS 文件,展开后剔除法定节假日,生成实际的会议排期表。
个人用户将复杂的重复日程转换为扁平化的单次事件列表,以便导入不支持 RRULE 的简易日历应用。

用户案例

1. 展开每周团队例会并跳过节假日

项目经理
背景原因
团队每周一和周三上午 9 点有固定的同步会,但遇到法定节假日需要取消。
解决问题
现有的 ICS 文件只包含一条带 RRULE 的重复规则,无法直观看到未来几个月的实际开会日期。
如何使用
粘贴 VEVENT 文本,在“节假日日期”中填入假期的具体日期(如 2026-04-08),选择输出格式为 JSON。
示例配置
holidayDates: 2026-04-08
maxOccurrences: 20
outputFormat: json
效果
成功生成未来 20 次会议的具体 UTC 时间列表,且自动排除了 4 月 8 日的会议实例。

2. 转换重复日程为扁平化 ICS 文件

系统管理员
背景原因
公司的旧版考勤系统不支持解析 ICS 文件中的 RRULE 字段,只能读取单次事件。
解决问题
需要把包含重复规则的日历文件转换为包含多个独立事件的普通 ICS 文件。
如何使用
上传包含重复规则的 .ics 文件,在“时区覆盖”中输入 Asia/Shanghai,选择输出格式为 ICS。
示例配置
timezoneOverride: Asia/Shanghai
outputFormat: ics
效果
导出一个全新的 ICS 文件,原有的 RRULE 被移除,替换为多个独立的 VEVENT 实例,且头部带有指定的时区标签。

用 Samples 测试

json, text, file

相关专题

常见问题

工具支持解析哪些重复频率(FREQ)?

当前支持解析 DAILY(按天)、WEEKLY(按周)、MONTHLY(按月)和 YEARLY(按年)的重复频率。

如果 RRULE 中没有设置结束时间(UNTIL)或次数(COUNT)怎么办?

工具提供了“最大展开次数”选项(默认 100 次),作为安全上限,防止生成无限循环的日程实例。

如何排除特定日期的日程?

在“节假日日期”输入框中按行输入需要排除的日期(格式为 YYYY-MM-DD),工具在展开时会自动跳过这些日期的实例。

可以同时处理多个 VEVENT 吗?

目前工具仅支持解析并展开输入内容中匹配到的第一个 VEVENT。

导出的 JSON 数据包含哪些内容?

导出的 JSON 会包含一个 occurrences 数组,列出所有展开后的具体日程实例的开始时间(UTC 格式)。

API 文档

请求端点

POST /zh/api/tools/ics-calendar-recurrence-rule-expander

请求参数

参数名 类型 必填 描述
icsInput textarea -
icsFile file (需要先上传) -
timezoneOverride text -
holidayDates textarea -
maxOccurrences number -
outputFormat select -

文件类型参数需要先通过 POST /upload/ics-calendar-recurrence-rule-expander 上传获取 filePath,然后将 filePath 传递给对应的文件字段。

响应格式

{
  "key": {...},
  "metadata": {
    "key": "value"
  },
  "error": "Error message (optional)",
  "message": "Notification message (optional)"
}
JSON数据: JSON数据

AI MCP 文档

将此工具添加到您的 MCP 服务器配置中:

{
  "mcpServers": {
    "elysiatools-ics-calendar-recurrence-rule-expander": {
      "name": "ics-calendar-recurrence-rule-expander",
      "description": "将带 RRULE 的 VEVENT 展开为具体 occurrence,并导出为 JSON 或展开后的 ICS 日历",
      "baseUrl": "https://elysiatools.com/mcp/sse?toolId=ics-calendar-recurrence-rule-expander",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

你可以串联多个工具,比如:`https://elysiatools.com/mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp`,最多20个。

支持 URL 文件链接或 Base64 编码作为文件参数。

如果遇见问题,请联系我们:[email protected]