2009-12-30 6 views
2

Ruby Rical을 사용하여 기본적으로 초대장에 참석하고 있음을 나타내는 원본 icalendar에 대한 응답으로 icalendar를 생성합니다.Ruby Rical Timezone 문제

정확하게 응답을 생성 할 수 있지만 시간대에 문제가 있습니다. 기본적으로 RiCal이 올바른 표준 시간대를 유추하면 원래 파일에 지정된 TimeZone 문자열에 따라 올바르게 작동합니다.

나를 예에서 이것을 넣어 보자 :

나는 문제없이 Google 캘린더에서이 초대를 회신 할 수 있습니다 :

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) 초대에 대한 응답 생성 할 때 : 당신이 TZID시피

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 

: 미국/태평양 RICAL에 대한 잘못된 시간대 indentifier 다음에, 그래서이다 사례 ... Rical을 사용하여이 유형의 icalendar에 답하고 원래의 표준 시간대를 보존하려면 어떻게해야합니까?

질문이 명확하지 않으면 제게 당신에게 필요한 것을 물어보십시오.

답변

2

나는 RiCal이 TZInfo를 사용하여 시간대를 지원한다고 생각합니다. 아마도 현재 Ruby on Rails의 ActiveSupport 라이브러리에 포함되어있는 TZInfo의 컷 다운 버전을 사용하고있을 것입니다. 여기에는 필요한 미국/태평양 시간대 정의가 포함되어 있지 않습니다.

TZInfo의 정식 버전에는 미국/태평양이 포함됩니다. tzinfo gem을 설치하고 Rails 앱을 다시 시작하면이 기능이 작동한다는 것을 알 수 있습니다.

+1

와우 이것이 너무 멋지다. 바로 지금 확인해 보자. :) –