문제

프로토콜 API를 통해 반복적 인 이벤트를 내 달력에 추가하려고합니다. Google의 인터페이스에서 만든 이벤트에서 Repurence 태그의 구문을 가져 와서 제작 요청에서 사용했습니다. 내가 제출 한 내용은 다음과 같습니다.

<?xml version='1.0' encoding='utf-8' ?> 
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005'> 
    <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category> 
    <title type='text'>Hi Stack Overflow!</title> 
    <content type='text'>Help me please!</content> 
    <gd:where valueString='StackOverflow.com'></gd:where> 
    <gd:recurrence>
        DTSTART;TZID=America/Los_Angeles:20090824T080000
        DTEND;TZID=America/Los_Angeles:20090824T090000 
        RRULE:FREQ=DAILY;WKST=SU;UNTIL=20090828T090000 
        BEGIN:VTIMEZONE TZID:America/Los_Angeles X-LIC-LOCATION:America/Los_Angeles 
        BEGIN:DAYLIGHT TZOFFSETFROM:-0800 TZOFFSETTO:-0700 TZNAME:PDT DTSTART:19700308T020000 
        RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU 
        END:DAYLIGHT 
        BEGIN:STANDARD TZOFFSETFROM:-0700 TZOFFSETTO:-0800 TZNAME:PST DTSTART:19701101T020000 
        RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU 
        END:STANDARD 
        END:VTIMEZONE
    </gd:recurrence> 
 </entry>

이벤트가 추가되지만 반복되지 않습니다. 결과 이벤트 피드의 재발 섹션을 살펴보면 반복을 정의하는 rrule은 없습니다.

도움을 주셔서 감사합니다!

도움이 되었습니까?

해결책

두가지:

  1. 귀하의 시간대 섹션은 유효하지 않습니다. 각 속성이 자체적으로 라인에 있어야한다고 생각합니다.

  2. 당신의 "Tlo Tlo"는 UTC 시간이어야합니다. RFC2445에서 :

날짜 시간 값으로 지정된 경우 UTC 시간 형식으로 지정해야합니다.

따라서 여기에는 "The Ther"부분에 대한 UTC로 현지 시간을 조정하고 시간대를 확장 한 완전한 예입니다.

DTSTART;TZID=America/Los_Angeles:20090824T080000
DTEND;TZID=America/Los_Angeles:20090824T090000 
RRULE:FREQ=DAILY;WKST=SU;UNTIL=20090828T160000Z
BEGIN:VTIMEZONE
TZID:America/Los_Angeles
X-LIC-LOCATION:America/Los_Angeles 
BEGIN:DAYLIGHT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
TZNAME:PDT
DTSTART:19700308T020000 
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU 
END:DAYLIGHT 
BEGIN:STANDARD
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
TZNAME:PST
DTSTART:19701101T020000 
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU 
END:STANDARD 
END:VTIMEZONE

나는 이것을 몰래 의심했다 5월 최근의 변화였습니다.

또는 vtimezone 섹션을 완전히 생략하려고 시도 할 수 있습니다. Google 캘린더가 지원하는 ID 인 TZID를 제공합니다. 예를 들어:

DTSTART;TZID=America/Los_Angeles:20090824T080000
DTEND;TZID=America/Los_Angeles:20090824T090000 
RRULE:FREQ=DAILY;WKST=SU;UNTIL=20090828T160000Z
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top