我在使用 Google 导出的 .ics 文件和时区时遇到问题。我有一个我正在尝试将其添加到雅虎群组日历中的活动列表。由于雅虎需要 .ics 文件,我使用 .csv 将事件导入 Google,然后导出日历。这些事件在 Google 中似乎是正确的。
当我将 .ics 文件导入 Yahoo 时,事件时间采用 UTC-0 时区,而不是本地时区(美国/纽约)。例如,我的测试活动在 Google 日历中于上午 9 点开始,但导入 Yahoo 后于下午 2 点开始。我读过有关 Olson ID 和尾随 Z 的信息,包括“Eric 的注释:修复 ICS 时区”。我应用此信息的努力要么没有效果,要么将事件又推迟了 5 小时(晚上 7 点)。
这是我的测试事件的 .ics 导出:
BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:iCalTest
X-WR-TIMEZONE:America/New_York
X-WR-CALDESC:
BEGIN:VEVENT
DTSTART:20160118T140000Z
DTEND:20160118T160000Z
DTSTAMP:20160125T042448Z
UID:[email protected]
CREATED:20160125T042434Z
DESCRIPTION:
LAST-MODIFIED:20160125T042434Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:Day of Service
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR
需要添加/更改哪些内容才能使此活动在雅虎日历中显示为上午 9 点开始?
以上活动有效代表了美国/纽约上午 9 点开始的活动。 您确定导入此事件的雅虎日历具有正确的时区设置吗? 刚刚将其导入雅虎日历,它正确地代表了该事件(在我的情况下是下午 3 点,因为我在 CET)。换句话说,它确实考虑了我的本地设置。不过,这是雅虎个人日历,而不是团体日历。
另一种表示方法是使用带有时区的当地时间,在这种情况下,您需要删除 DTSTART 和 DTEND 上的 Zulu 后缀。
DTSTART;TZID=America/New_York:20160118T090000
DTEND;TZID=America/New_York:20160118T110000
工作解决方案:
我为这个问题创建并托管了自己的解决方案,因为我真的需要一些快速运行的东西。
然后我将其源代码和说明托管在 Github 上:https://github.com/bressanmarcos/ICS-Timezone-Fixer
在上面的链接中,您还将了解为什么会出现该问题。
简单来说,解决方案只是在前面添加 https://ics-changer.great-site.net/?ics_url=
来替换原始 .ics URL例如,如果您的原始链接是 https://link-to-original/calendar.ics,请改用 https://ics-changer.great-site.net/?ics_url=https://link-to -原始/calendar.ics
免责声明:我上面的托管解决方案只是为了方便,您也可以托管自己的服务器!!!