2017-11-28 21 views
0

매주 목요일 저녁 오후 5시, 오후 5시에 시작하는 2 시간 50 분 이벤트입니다. Google 캘린더 또는 Evolution으로 가져올 때 첫 번째 발생은 맞지만 다음 주에는 수요일에 이벤트가 발생합니다. 내 응용 프로그램이 생성왜이 반복문으로 반복 일이 잘못 되었습니까?

DTSTART:20170908T000000Z 
DTEND:20170908T025000Z 
RRULE:FREQ=WEEKLY;UNTIL=20171201T080000Z;BYDAY=TH 

다른 이벤트 즉 BYDAY=TH,TU 그렇게 간단하게 BYDAY 내 문제에 대한 해결책이 아니다 제거 여러 날에 발생한다.

+0

당신의 예상 결과는 무엇인가 :

당신은 당신의 사건을 가지고 있어야는, 시간대와 함께 현지 시간으로 즉 사용을 표현? – noogui

+1

시간대 문제 일 수 있습니다. RFC-5545에 따르면 'Z'는 UTC 시간을 나타내지 만 Google 캘린더는 일반적으로 개별 캘린더와 연결된 시간대를 가지고 있습니다. 캘린더의 시간대는 무엇입니까? 설정 (기어 아이콘)> 시간대. – rianjs

+0

@noogui 예상 된 결과는 목요일에 매주 반복되는 이벤트입니다. ('BYDAY = TH'이후) 첫 번째 이벤트는 목요일의 정확한 시간에 이루어지며 이후 반복되는 이벤트는 수요일에 있습니다. @rianjs Google 캘린더의 시간대가 -8로 설정되었습니다. 이 문제는 Evolution에서도 발생하므로 Google 캘린더 설정 문제가 아닌 사양에 대한 오해가 있다고 가정합니다. – Maxwell

답변

1

이벤트의 시간대와 표시 시간대를 혼합합니다. 재발 계산이 진행되는 한, VEVENT에서 선언 한 시간대 만 계산됩니다. 여기서 당신은 UTC를 사용하고 있습니다. 따라서 :

첫 번째 인스턴스는 금요일 인 20170908에 있습니다. 거기에서부터 목요일마다 재발을 요구합니다. 20170908 이후의 다음 목요일은 20170914이므로 다음 인스턴스는 20170914T000000Z에서 시작됩니다.

시간대를 PST로 표시하면이 이벤트는 실제로 목요일 저녁 첫 번째 인스턴스입니다. 그러나 위에 계산 된 두 번째 인스턴스는 수요일 PST 시간 인 목요일 UTC 시간입니다.

이 특정 문제 외에도 일광 절약 시간제 변경에 대해 걱정할 필요가 있습니다. 이벤트가 PST 시간대에서 실제로 발생하는 경우 DST 전환이 발생한 후 11 월에 시간이 변경됩니다.

따라서 UTC (Zulu) 시간을 사용하여 되풀이 이벤트를 표현하는 것은 거의 불가능합니다.

DTSTART;TZID="America/Los_Angeles":20170907T170000