ICS时区导入Google与Outlook转换异常技术求助
Problem Overview
I created an ICS file where all events are scheduled from 9 AM to 5 PM Pacific Time (UTC-8/PDT). When converted to my local time zone (GMT+4), these events should display as 10 PM to 6 AM the next day. However:
- Outlook correctly shows the 10PM-6AM window only after I manually adjusted the
TZOFFSETFROM/TZOFFSETTOparameters (which I don't think is correct, since the original Pacific time settings are accurate) - Google Calendar consistently displays them as 8 PM to 4 AM the next day, completely ignoring the VTIMEZONE parameters in the ICS file.
My ICS File Code
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
Expected Outcome
Both Google Calendar and Outlook should display the events as 10 PM to 6 AM next day when viewed in the GMT+4 time zone.
Root Cause & Fixes
First, let's clear up a key detail: your events are scheduled in July, which falls during Pacific Daylight Time (PDT, UTC-7), not standard PST (UTC-8). That's why Google Calendar converts 9 AM PDT to 8 PM GMT+4 (9 AM UTC-7 + 11 hours = 8 PM UTC+4) — this is actually the correct conversion for standard Pacific time rules.
The core issue with your custom VTIMEZONE edits is that Google Calendar ignores embedded timezone data for well-known TZIDs like America/Los_Angeles. It relies on its own internal, up-to-date timezone database instead of the one you provide. Outlook, however, will respect the embedded VTIMEZONE if it's present.
If you truly need the events to show as 10 PM to 6 AM in GMT+4, here are your options:
1. Use a Custom Timezone (No DST)
Define a custom timezone that always uses UTC-8 (ignoring daylight savings) and use a unique TZID that Google doesn't recognize. This forces both platforms to use your specified offset:
VERSION:2.0 PRODID:-//Foobar Corporation//NONSGML Foobar//EN CALSCALE:GREGORIAN METHOD:PUBLISH X-WR-CALNAME:EnergyPlex X-WR-TIMEZONE:UTC-08:00 BEGIN:VTIMEZONE TZID:Custom_Pacific_UTC-8 BEGIN:STANDARD TZOFFSETFROM:-0800 TZOFFSETTO:-0800 TZNAME:PST (Fixed) DTSTART:19700101T000000 RRULE:FREQ=YEARLY;BYMONTH=1;BYDAY=1SU END:STANDARD END:VTIMEZONE BEGIN:VEVENT UID:20190709T133817-12030501-example.com DTSTAMP:20190709T133817 DTSTART;TZID=Custom_Pacific_UTC-8:20190722T090000 DTEND;TZID=Custom_Pacific_UTC-8:20190722T170000 SUMMARY:Energyplex Day Camp for Jenny Doe DESCRIPTION: Your child is booked for a camp on this day. END:VEVENT ... (repeat remaining events with the same TZID) END:VCALENDAR
2. Double-Check Your Google Calendar Timezone Setting
Sometimes your device's timezone might not match what's configured in Google Calendar. To verify:
- Open Google Calendar settings
- Under "Time zone", confirm the selected option is GMT+4 (e.g., "GMT+04:00" or a region like "Abu Dhabi, Muscat")
3. Verify Your Expected Offset Math
Quick sanity check: 9 AM UTC-8 converts to 9 PM GMT+4 (9 AM + 12 hours). Your expected 10 PM suggests either:
- A miscalculation in the desired offset
- Your local timezone is actually GMT+5 (not GMT+4)
- You want events scheduled in UTC-9 (Alaska Time) instead of Pacific Time
内容的提问来源于stack exchange,提问作者Tagr

