ICS 日历生成与检查
时间与日期
正在载入
正在加载工具
工具代码会在打开时按需载入,请稍候。
本工具的全部运算都发生在你的浏览器中,输入内容不会发送到任何服务器。
关于这个工具
从 JSON 事件数组本地生成 iCalendar,或检查支持的 ICS 子集,并预览重复实例、例外和重叠。
常见用途
- 不授予日历权限,准备有界重复事件。
- 检查支持的 ICS 文字,定位例外日期和潜在重叠。
使用方法
- 1.载入示例或输入事件 JSON 数组与 UTC 生成时间戳;也可粘贴 ICS。
- 2.生成或检查,核对时间类型、排除实例、提示和重叠分页。
- 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/夏令时。跨类型实例对未比较;结束排他,相接区间不算重叠,同一系列重叠也显示。预览仅表示有界子集,不代表个人空闲。