2011-11-22 110 views
2

我已经构建了一个完全适用于Apple日历的iCal源。然后我尝试将其导入Google日历,并且时间都是五个小时,这很有意义,因为我在美国/东部时区。我从理论上认为日历程序应该像当地时代一样尊重我的时代,根据它们如何格式化(它们没有时区或UTC标签),但这不会发生。所以,我在日历中添加了时区信息。无法让谷歌日历尊重iCal时区

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:[email protected] 9 
END:VEVENT 

所以,我不确定为什么Google日历有问题。它可能只是缓存网址,并没有真正更新日历?还有什么我该做的。

+0

谷歌日历确实缓存了一段时间的网址 - 很多人一直在抱怨手动刷新是一个需要的功能(多年来)。 –

回答

1

因此,我采用了通过在每个事件时间结束时添加一个Z来使用UTC时间。再加上日历中的时区信息,Google可以正确转换时间 - 除了夏令时以外。那些仍然关闭。如果我能弄明白为什么会更新。

2

您可以在每个事件日期中指定特定时区,例如,

DTSTART;TZID=America/New_York:20150218T133000 

这样夏令时会自动考虑和你没有创建日历时从本地时间转换为UTC(Z)格式。请注意,如果解释ical文件的客户端没有其区域设置权限,则还可能遇到时区问题。