You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ICS时区导入Google与Outlook转换异常技术求助

ICS Time Zone Conversion Issue: Google Calendar Ignoring TZ Parameters, Showing Wrong Offset for GMT+4

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/TZOFFSETTO parameters (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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:18:13