导入到Google或Outlook时ICS时区转换不正确

导入到Google或Outlook时ICS时区转换不正确,outlook,google-calendar-api,icalendar,Outlook,Google Calendar Api,Icalendar,我已经生成了一个ICS文件,其中包含的事件都在太平洋时间(UTC-8)上午9点开始,下午5点结束。当转换为我的本地时间(GMT+4)时,它应该显示事件为晚上10点到早上6点,而不是Google和Outlook都将其转换为晚上8点到早上4点 我尝试过调整daylight和standard的TZOFFSETFROM和TZOFFSETTO设置,以显示正确的转换,但它只对Outlook有影响-Google Calendar似乎完全忽略了这些设置。然而,对我来说,更改Outlook的设置似乎是错误的,因为

我已经生成了一个ICS文件,其中包含的事件都在太平洋时间(UTC-8)上午9点开始,下午5点结束。当转换为我的本地时间(GMT+4)时,它应该显示事件为晚上10点到早上6点,而不是Google和Outlook都将其转换为晚上8点到早上4点

我尝试过调整daylight和standard的TZOFFSETFROM和TZOFFSETTO设置,以显示正确的转换,但它只对Outlook有影响-Google Calendar似乎完全忽略了这些设置。然而,对我来说,更改Outlook的设置似乎是错误的,因为它们最初具有太平洋时间的正确设置

随附ICS文件的代码

VERSION:2.0
PRODID:-//Foobar Corporation//NONSGML Foobar//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:EnergyPlex
X-WR-TIMEZONE:America/Los_Angeles
BEGIN:VTIMEZONE
TZID:America/Los_Angeles
X-LIC-LOCATION:America/Los_Angeles
BEGIN:DAYLIGHT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
TZNAME:PDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
TZNAME:PST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
UID:20190709T133817-12030501-example.com
DTSTAMP:20190709T133817
DTSTART;TZID=America/Los_Angeles:20190722T090000
DTEND;TZID=America/Los_Angeles:20190722T170000
SUMMARY:Energyplex Day Camp for Jenny Doe
DESCRIPTION: Your child is booked for a camp on this day.
END:VEVENT
BEGIN:VEVENT
UID:20190709T133817-422290764-example.com
DTSTAMP:20190709T133817
DTSTART;TZID=America/Los_Angeles:20190723T090000
DTEND;TZID=America/Los_Angeles:20190723T170000
SUMMARY:Energyplex Day Camp for Jenny Doe
DESCRIPTION: Your child is booked for a camp on this day.
END:VEVENT
BEGIN:VEVENT
UID:20190709T133817-847881910-example.com
DTSTAMP:20190709T133817
DTSTART;TZID=America/Los_Angeles:20190724T090000
DTEND;TZID=America/Los_Angeles:20190724T170000
SUMMARY:Energyplex Day Camp for Jenny Doe
DESCRIPTION: Your child is booked for a camp on this day.
END:VEVENT
BEGIN:VEVENT
UID:20190709T133817-1093239879-example.com
DTSTAMP:20190709T133817
DTSTART;TZID=America/Los_Angeles:20190725T090000
DTEND;TZID=America/Los_Angeles:20190725T170000
SUMMARY:Energyplex Day Camp for Jenny Doe
DESCRIPTION: Your child is booked for a camp on this day.
END:VEVENT
BEGIN:VEVENT
UID:20190709T133817-190860610-example.com
DTSTAMP:20190709T133817
DTSTART;TZID=America/Los_Angeles:20190726T090000
DTEND;TZID=America/Los_Angeles:20190726T170000
SUMMARY:Energyplex Day Camp for Jenny Doe
DESCRIPTION: Your child is booked for a camp on this day.
END:VEVENT
END:VCALENDAR

预期结果是在Outlook和Google日历上显示事件为格林尼治标准时间+4时区的晚上10点到早上6点。

根据您提供的信息,您的假设是错误的。两者都显示了正确的时间:

鉴于您活动的开始和结束日期(例如,第一次活动的开始日期为20190722T09000),美国/洛杉矶在这些日期处于DST,因此在UTC-7


UTC时间为20190722T09000+7h=20190722T1600000,转换为UTC+4时,当地时间为20190722T1600000+4h=20190722T200000,所以是晚上8点。

你是对的,我不知道为什么我认为计算错误。