无法让谷歌日历遵守iCal时区设置的问题

3

我已经创建了一个iCal日历,可以在苹果的日历中完美使用。但是当我尝试将其导入Google Calendar时,所有时间都会相差五个小时,这很有道理,因为我在美国/东部时区。我曾认为根据ical规范,日历程序应该将我的时间作为本地时间进行处理,基于它们的格式(它们没有时区或UTC标签),但实际并非如此。因此,我向日历添加了时区信息。

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而没有真正更新日历?我是否应该做些其他的事情。


1
Google日历确实会缓存URL一段时间 - 许多人一直在抱怨需要手动刷新的功能(多年来)。 - Dave Foster
2个回答

3
您可以在每个事件日期中指定特定的时区,例如:
DTSTART;TZID=America/New_York:20150218T133000

那样的话,夏令时将会被自动考虑进去,您不需要在创建日历时将本地时间转换为UTC(Z)格式。请注意,如果解释ical文件的客户端没有正确设置其时区,您也可能遇到时区问题。

2
因此,我采用UTC时间,在每个事件时间结尾添加一个Z。结合日历中的时区信息,Google现在可以正确地转换时间,但是夏令时还是有误差。如果我弄清楚原因,我会进行更新。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接