返回

ICS 日历生成与检查

时间与日期

正在载入

正在加载工具

工具代码会在打开时按需载入,请稍候。

本工具的全部运算都发生在你的浏览器中,输入内容不会发送到任何服务器。

关于这个工具

从 JSON 事件数组本地生成 iCalendar,或检查支持的 ICS 子集,并预览重复实例、例外和重叠。

常见用途

  • 不授予日历权限,准备有界重复事件。
  • 检查支持的 ICS 文字,定位例外日期和潜在重叠。

使用方法

  1. 1.载入示例或输入事件 JSON 数组与 UTC 生成时间戳;也可粘贴 ICS。
  2. 2.生成或检查,核对时间类型、排除实例、提示和重叠分页。
  3. 3.查看完整规范化 ICS 并请求下载;日历导入另行决定。

已执行的日历示例

每日例外与重叠

20260105T090000Z–100000Z;FREQ=DAILY;COUNT=4;EXDATE=20260106T090000Z;另一事件 20260107T093000Z–103000Z
4; 1

COUNT 先生成四次开始,再移除1月6日,剩三次;加另一事件共四次。1月7日有一对 UTC 重叠。

月末日期

20260131–20260201;FREQ=MONTHLY;COUNT=4
20260131, 20260331, 20260531, 20260731

二月、四月和六月没有31日,跳过且不占 COUNT。结束日期排他。

浮动每周事件

20260105T090000–100000;FREQ=WEEKLY;COUNT=3;BYDAY=MO,WE
20260105T090000, 20260107T090000, 20260112T090000

浮动时间每周一/三重复,不推断时区;保留1月5、7、12日。

限制与说明

  • 支持子集,不能代替完整 RFC 合规结论:VCALENDAR VERSION 2.0 / PRODID;VEVENT 必须含 UID、UTC DTSTAMP、SUMMARY 和明确正时长的 DTSTART/DTEND,可选 DESCRIPTION、LOCATION、RRULE、EXDATE。仅支持 DATE、UTC 和浮动时间。TZID / VTIMEZONE、提醒、参与者、组织者、URL、RDATE、DURATION、实例覆盖及其他字段/组件均报为不支持。不自动导入日历。
  • 上限:每份输入/输出 256 KiB UTF-8;40 个事件;1900–2100 年;UID 200、标题 200、地点 500、描述 2000 个 UTF-16 单元;每个规则 500 次、500 条例外;过滤例外前总计 2000 个实例、100000 个候选步骤、2000 个重叠。检查最多 6000 个物理行。超限整次拒绝。
  • 只支持有限 RRULE:FREQ=DAILY/WEEKLY/MONTHLY/YEARLY;INTERVAL 1–366;COUNT 1–500 或同类型且包含边界的 UNTIL,必须二选一。WEEKLY 可用无序号 BYDAY=MO,TU,… 与 WKST(默认 MO);BYDAY 必须含开始日的星期。其他规则字段拒绝。无效月/年日期跳过且不占 COUNT;EXDATE 在计数后移除开始时间,不补次数。例外未匹配实例时提示。
  • UTC(Z)、浮动墙上时间与全天日期分别比较。浮动时间跟随导入日历的时区,不转换 IANA/夏令时。跨类型实例对未比较;结束排他,相接区间不算重叠,同一系列重叠也显示。预览仅表示有界子集,不代表个人空闲。 规范化输出采用 CRLF、TEXT 转义和最多 75 个 UTF-8 字节的物理行;输入折行/换行问题另列提示。导出含所有事件文字与 UID。导入前核对目标日历;导入可能新建或更新同 UID 事件。
  • 仅浏览器本地处理:不上传、不存储、不获取外部引用、不发送邀请、不访问日历、不自动导入。事件内容与 UID 可能包含隐私,导出的 ICS 会保留它们。

常见问题

检查通过表示所有 ICS 都支持吗?

支持子集,不能代替完整 RFC 合规结论:VCALENDAR VERSION 2.0 / PRODID;VEVENT 必须含 UID、UTC DTSTAMP、SUMMARY 和明确正时长的 DTSTART/DTEND,可选 DESCRIPTION、LOCATION、RRULE、EXDATE。仅支持 DATE、UTC 和浮动时间。TZID / VTIMEZONE、提醒、参与者、组织者、URL、RDATE、DURATION、实例覆盖及其他字段/组件均报为不支持。不自动导入日历。

COUNT 和 EXDATE 怎么组合?

只支持有限 RRULE:FREQ=DAILY/WEEKLY/MONTHLY/YEARLY;INTERVAL 1–366;COUNT 1–500 或同类型且包含边界的 UNTIL,必须二选一。WEEKLY 可用无序号 BYDAY=MO,TU,… 与 WKST(默认 MO);BYDAY 必须含开始日的星期。其他规则字段拒绝。无效月/年日期跳过且不占 COUNT;EXDATE 在计数后移除开始时间,不补次数。例外未匹配实例时提示。

能判断个人是否空闲吗?

UTC(Z)、浮动墙上时间与全天日期分别比较。浮动时间跟随导入日历的时区,不转换 IANA/夏令时。跨类型实例对未比较;结束排他,相接区间不算重叠,同一系列重叠也显示。预览仅表示有界子集,不代表个人空闲。

相关工具