我有一个.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上出现这种奇怪的行为吗?
答案 0 :(得分:2)
您对美国/洛杉矶的VTIMEZONE定义是虚假的。它缺少标准组件。要查看其外观,只需邀请自己参加任何客户端的会议并查看生成的ics文件即可。
事情在Mac / iOS上是可行的,因为那些客户端倾向于忽略实际的定义,而只是依靠TZID = America / Los_Angeles将其映射到他们自己的定义。