Google calendar api 谷歌日历处理同一ics文件的方式与导入和网络视频流不同

Google calendar api 谷歌日历处理同一ics文件的方式与导入和网络视频流不同,google-calendar-api,icalendar,webcal,Google Calendar Api,Icalendar,Webcal,我创建了一个网络视频流,谷歌日历成功地读取了它,并创建了事件。但是,它创建的事件比应该的早5个小时。例如,下面的事件发生在下午1点 如果我使用相同的webcal流并将其保存为.ics文件,然后将该文件导入到Google日历中,则所有时间都是正确的 为什么谷歌日历会以不同的方式处理这些问题?在Mac日历应用程序中,无论是通过webcal流添加事件,还是导入.ics文件,事件都会在正确的时间出现 Google Calendar和Mac Calendar都知道我在EST(通过日历设置-ICS文件中没有

我创建了一个网络视频流,谷歌日历成功地读取了它,并创建了事件。但是,它创建的事件比应该的早5个小时。例如,下面的事件发生在下午1点

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

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

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

我希望Google能够正确处理webcal流,这样当我添加更多事件时,它会自动更新

此处列出了ICS文件的开始和单个事件。它在Mac日历中显示为下午6点,在谷歌日历中显示为下午1点

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

这是因为谷歌日历不做浮动时区,所以当没有指定时区时,它假定为UTC。Mac calendar在导入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

谢谢你,基格。将Z添加到时间末尾(如DTSTART:20121208T230000Z)不表示时间是UTC吗?我已经调整了我的时间,假设是这样。此外,我仍然不明白为什么谷歌日历在处理时区时会与导入的.ics文件时有所不同。据我所知,谷歌日历实际上不符合RFC:并且在时间浮动时不应假定UTC。因此,最后,我只是手动向UTC添加了一段时间(并使用Z表示UTZ)来解释我的时区。这是可行的,所以在gcal和mac日历中时间都是正确的。Google Calendar对于网络视频流的不可更新性使得它很难使用。我甚至会切换谷歌账户,将相同的网络视频流添加到另一个账户,但仍然不会更新。不知道谷歌是如何处理这样的webstreams的,如果他们能在某个地方解释一下(或者如果他们能让用户控制更新行为,他们会更喜欢)。再次感谢您的关注。