Google calendar api 让谷歌日历遵守iCal时区有困难
我已经构建了一个iCal提要,它在苹果的日历中运行得非常好。然后我试着把它导入谷歌日历,时间都是五个小时,这是有道理的,因为我在美国/东部时区。根据ical规范,我假设日历程序应该将我的时间视为本地时间,基于它们的格式(它们没有时区或UTC标记),但事实并非如此。因此,我在日历中添加了时区信息Google calendar api 让谷歌日历遵守iCal时区有困难,google-calendar-api,icalendar,Google Calendar Api,Icalendar,我已经构建了一个iCal提要,它在苹果的日历中运行得非常好。然后我试着把它导入谷歌日历,时间都是五个小时,这是有道理的,因为我在美国/东部时区。根据ical规范,我假设日历程序应该将我的时间视为本地时间,基于它们的格式(它们没有时区或UTC标记),但事实并非如此。因此,我在日历中添加了时区信息 BEGIN:VCALENDAR CALSCALE:GREGORIAN METHOD:PUBLISH PRODID:iCalendar-Ruby VERSION:2.0 BEGIN:VTIMEZON
BEGIN:VCALENDAR
CALSCALE:GREGORIAN
METHOD:PUBLISH
PRODID:iCalendar-Ruby VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/New_York
BEGIN:DAYLIGHT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
TZNAME:EDT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
TZNAME:EST
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
END:VTIMEZONE
我删除了一个重新导入的日历,时间仍然关闭。标准事件如下所示:
BEGIN:VEVENT
DESCRIPTION:Justin M. is scheduled to work from 12 PM to 3 PM.
DTEND:20111103T150000
DTSTAMP:20111122T144545
DTSTART:20111103T120000
LOCATION:Museum of Unnatural History
SEQUENCE:0
SUMMARY:Justin M.
UID:2011-11-22T14:45:45+00:00_239255930@0a9a698e-854d-48e2-97d4-37ff0b28311 9
END:VEVENT
所以,我不知道谷歌日历为什么会有问题。是否只是缓存URL而不是真正更新日历?还有什么我应该做的吗。因此,我求助于使用UTC时间,在每个事件时间的末尾添加一个
Z
。加上日历中的时区信息,谷歌正确地转换了时间——除了白天。那些还是关着的。如果我能找出原因,将更新。您可以在每个事件日期中指定特定的时区,例如
DTSTART;TZID=America/New_York:20150218T133000
这样,在创建日历时,将自动考虑日光时间,而不必将本地时间转换为UTC(Z)格式。注意:如果解释ical文件的客户端没有正确的区域设置,您也可能会遇到时区问题。Google calendar确实会将URL缓存一段时间-许多人一直抱怨手动刷新是一项必需的功能(多年来)。