0

我创建了一个 webcal 流,Google 日历成功读取它,并创建了事件。但是,它创建的事件比应有的时间早 5 小时。例如,下面的事件在下午 1 点出现。

如果我采用相同的 webcal 流并将其保存为 .ics 文件,然后将该文件导入 Google 日历,则所有时间都是正确的。

为什么 Google 日历会以不同的方式处理这些问题?在 Mac 日历应用程序中,事件在正确的时间出现,无论我是通过 webcal 流添加它们,还是通过导入 .ics 文件。

Google 日历和 Mac 日历都知道我在 EST 中(通过日历设置 - ICS 文件中没有任何声明,如您所见)。

我希望 Google 能够正确处理 webcal 流,以便在我添加更多事件时它会自动更新。

此处列出了 ICS 文件的开头和单个事件。它在下午 6 点出现在 Mac 日历中,在下午 1 点出现在 Google 日历中。

BEGIN:VCALENDAR
CALSCALE:GREGORIAN
METHOD:PUBLISH
PRODID:iCalendar-Ruby
VERSION:2.0
BEGIN:VEVENT
DESCRIPTION: football game on Sunday at 6pm, on NBC, with dinner
DTEND:20121208T233000Z
DTSTAMP:20130124T200858
DTSTART:20121208T230000Z
CLASS:PUBLIC
SEQUENCE:0
SUMMARY:sunday 6pm football game
UID:2013-01-24T20:08:58+00:00_945022440@e8deb599-a4b6-40a3-b82c-d1baf5e9109e
END:VEVENT
END:VCALENDAR
4

1 回答 1

1

这是因为谷歌日历不做浮动时区,所以当没有指定时区时,它假定为 UTC。当您导入未在 ics 文件中指定特定时区的内容时,Mac 日历会假定您的时区。因此,您必须将时区信息添加到您的文件中。

Google 日历如何处理时区

为包括 Google 在内的多个客户编写 ICS 文件

在文件中添加 VTIMEZONE 部分应该会有所帮助:

BEGIN:VTIMEZONE
TZID:Eastern
BEGIN:STANDARD
DTSTART:16011104T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010311T020000
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
END:VTIMEZONE
于 2013-01-24T21:34:35.033 回答