导入 ICS 事件时的错误时间

Wrong Time When Importing ICS Event

我有一个 .ics 文件,其中包含以下 iCalendar 代码:

BEGIN:VCALENDAR

PRODID;X-RICAL-TZSOURCE=TZINFO:-//Company Name//NONSGML example.co
 m//EN
CALSCALE:GREGORIAN
VERSION:2.0
METHOD:PUBLISH

BEGIN:VTIMEZONE
TZID;X-RICAL-TZSOURCE=TZINFO:America/Los_Angeles
BEGIN:DAYLIGHT
DTSTART:20180311T020000
RDATE:20180311T020000
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
TZNAME:PDT
END:DAYLIGHT
END:VTIMEZONE

BEGIN:VEVENT
CREATED;VALUE=DATE-TIME:20180622T002920Z
DTEND;TZID=America/Los_Angeles;VALUE=DATE-TIME:20180703T173000
DTSTART;TZID=America/Los_Angeles;VALUE=DATE-TIME:20180703T170000
DTSTAMP;VALUE=DATE-TIME:20180622T002920Z
ATTENDEE#<Client 1234 "Lorem Ipsum">
UID:id@example.com
DESCRIPTION:Super Secret Event
URL:https://example.com/path/id
SUMMARY:Super secret summary
ORGANIZER;CN=Tamer Shlash;CUTYPE=INDIVIDUAL;PARTSTAT=A
 CCEPTED:mailto:noreply@example.com
SEQUENCE:0
END:VEVENT

END:VCALENDAR

但是,当我在 Android 设备上下载文件并导入它时,活动延迟了 1 小时。在 Mac 或 iPhone 设备上尝试将导入具有正确时间的事件。

知道为什么我在 Android 上会出现这种奇怪的行为吗?

您对 America/Los 安吉利斯的 VTIMEZONE 定义是假的。它缺少标准组件。要查看它应该是什么样子,只需邀请自己参加任何客户的会议并查看生成的 ics 文件。

事情正在 Mac/iOS 上进行,因为那些客户往往会忽略实际定义,而只依赖 TZID=America/Los_Angeles 将其映射到他们自己的定义。