重复规则是一段程序,不是一个日期
RRULE:FREQ=MONTHLY;BYDAY=-1FR;COUNT=12 里没有任何一个日期。它只包含产生日期的指令,而要诚实地回答这到底什么时候发生,唯一的办法就是把这些指令跑一遍。这个工具就在跑它们。
会应用哪些内容
RFC 5545 §3.3.10 的全部:FREQ、INTERVAL、COUNT、UNTIL、WKST,九个 BY* 部分(包括 -1FR(“最后一个星期五”)这样的负序数),以及 BYSETPOS。在规则之上,EXDATE 移除日期,RDATE 添加日期——每一行都会注明它来自哪一边,因为“某人手工加上去才存在的日期”和“规则生成的日期”是两回事。
UTC 偏移列为什么重要
每周 09:00 的会议,在时钟调整之后仍然是 09:00。变的是那个瞬间,挪了一小时;墙上钟面的读数没有变。这正是 RFC 5545 的要求,也正是天真的“加 7 × 86 400 000 毫秒”每年会算错两次的地方。所以每一次重复都并排显示两种读数:当地时间,以及带着产生它的偏移量的真实 UTC 瞬间。当两次重复的偏移量不同时,工具会明确指出来。
当 TZID 是真实时区名时,时区由你浏览器的 IANA 数据库解析;否则由文件内部的 VTIMEZONE 块解析——微软自造的名字(如 Romance Standard Time)也因此仍能正确解析。两者都无效时,偏移量显示为未知,而不是悄悄当成 UTC。
明说的限制
无穷的规则会展开到你设定的上限,结果标记为已截断。带有不可能条件的规则——FREQ=YEARLY;BYMONTH=2;BYMONTHDAY=30 语法合法,却永远匹配不到真实的一天——不会产生任何结果,而工具会说明为什么,而不是丢给你一张空表。
隐私
一切都在你的浏览器中运行。日历文件不会上传,这里也不会有任何网络请求。
Tiny Online Tools







