0

我想了解为什么必须在我们生成的 ical 文件中提供日光信息。为什么 GMT/UTC 时间不够用,为什么像 MS Outlook 2010 这样的电子邮件客户端无法处理它。

4

2 回答 2

1

主要原因是计算机上可能有也可能没有与TZID指定时区匹配的时区。iCAL 允许使用任何类型的时区 ID,包括 IANA 时区"America/Bogota"和 Windows 时区(如"SA Pacific Standard Time".

当 TZID 指定的系统上的时区信息可用时,应该首选它,但它可能不可用。人们可能正在查看在 Mac 上运行时在 Windows 机器上生成的 iCal 文件。或者可能没有所有当前时区更新,并且 TZID 可能指的是尚未在计算机上安装的新创建的时区。

将规则编码到 iCAL 文件中对于支持互操作性至关重要。它确实带来了这些规则的缺点,这些规则从事件创建时就被固定为它们的已知值。如果在事件发生之前规则发生变化,则事件可能发生在错误的时间 - 取决于文件的解释方式。这就是为什么当您通过 TZID 进行匹配时使用系统上的信息是一个更好的主意。

关于为什么 UTC 不足以安排时间,那是因为事件几乎总是根据当地时间来指定。本地时间与 UTC 的关系高度依赖于特定地方政府设置的时区。这些必须考虑夏令时和其他异常情况,政府可以改变主意。

例如,如果在美国太平洋时区的当地时间每天上午 8:00 安排定期约会,则在标准时间将发生在下午 4:00 UTC,在白天时间将发生在 5:00下午 UTC。相反,如果我按 UTC 安排,那么我的本地时间将在 DST 转换之前或之后休息一小时。这通常被称为“闹钟问题”,并且是2010 iPhone DST 错误的罪魁祸首。

于 2015-12-16T18:05:04.613 回答
0

我相信 iCalendar 规范的最初目的是提供一种独立的文件格式,所有日历用户代理 (CUA) 都会以相同的方式解释该文件格式,例如 Outlook。由于您不能假设所有 CUA 共享相同的时区信息,因此它必须包含在文件格式中。

然而,实际上,使用内置时区定义通常更实用,在这种情况下,您可以只指定 UTC 中的所有时间值(即,使用附加的“Z”)

于 2015-12-09T22:14:16.353 回答