2009-12-30 70 views
2

我正在使用Ruby Rical基本上生成icalendar作爲對原始icalendar的響應,說明我參加(接受)邀請。紅寶石Rical時區問題

我可以正確生成響應,但是我遇到了時區問題,基本上如果我讓RiCal推斷正確的時區,它將根據原始文件中指定的TimeZone字符串正確工作。

讓我把這個例子:

我可以回答來自谷歌日曆這一邀請沒有問題:

BEGIN:VCALENDAR 
PRODID:-//Google Inc//Google Calendar 70.9054//EN 
VERSION:2.0 
CALSCALE:GREGORIAN 
METHOD:REQUEST 
BEGIN:VEVENT 
DTSTART:20091226T210000Z 
DTEND:20091226T220000Z 
DTSTAMP:20091223T191926Z 
ORGANIZER;CN=xxx xxx:mailto:[email protected] 
UID:[email protected] 
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;RSVP=TRUE;CN=xxxx xxxx;X-NUM-GUESTS=0:mailto:[email protected] 
CREATED:20091223T191925Z 
DESCRIPTION:View your event at 4NmIxMmM1ZmJiODM4OTEx&ctz=America%2FLos_Angeles&hl=en. 
LAST-MODIFIED:20091223T191925Z 
LOCATION:800-292-2393 pin 1234 
SEQUENCE:0 
STATUS:CONFIRMED 
SUMMARY:test google calendar attendance response 
TRANSP:OPAQUE 
END:VEVENT 
END:VCALENDAR 

但我發現了一個錯誤(沒有這樣的文件加載 - tzinfo /定義/美國/太平洋時間),當我產生響應的iCal(蘋果Ical.app)邀請:

BEGIN:VCALENDAR 
CALSCALE:GREGORIAN 
VERSION:2.0 
METHOD:REQUEST 
PRODID:-//Apple Inc.//iCal 4.0.1//EN 
BEGIN:VTIMEZONE 
TZID:US/Pacific 
BEGIN:DAYLIGHT 
TZOFFSETFROM:-0800 
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU 
DTSTART:20070311T020000 
TZNAME:PDT 
TZOFFSETTO:-0700 
END:DAYLIGHT 
BEGIN:STANDARD 
TZOFFSETFROM:-0700 
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU 
DTSTART:20071104T020000 
TZNAME:PST 
TZOFFSETTO:-0800 
END:STANDARD 
END:VTIMEZONE 
BEGIN:VEVENT 
ATTENDEE;CN="[email protected]";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTI 
ON;RSVP=TRUE:mailto:[email protected] 
DTEND;TZID=US/Pacific:20091231T091500 

正如你看到的TZID:美國/太平洋是RiCal無效時區indentifier,所以在這些案例..你會如何使用Rical來回答這種icalendar並保留原來的時區?

如果我不清楚這個問題,請問我需要什麼。

回答

2

我認爲RiCal使用TZInfo來支持它的時區。您大概目前正在使用Ruby on Rails的ActiveSupport庫中包含的TZInfo的精簡版本。這不包含您需要的美國/太平洋時區定義。

TZInfo的完整版本包括美國/太平洋地區。如果你安裝了tzinfo gem,然後重新啓動你的Rails應用程序,你應該會發現這是有效的。

+1

哇這很酷,現在要檢查這個:) – 2009-12-30 17:26:57