2017-11-28 3 views
0

毎週木曜日の夕方に午後5時から始まる2時間50分のイベントです。 GoogleカレンダーまたはEvolutionにインポートすると、最初の発生は正しいが、その後の週には水曜日にイベントが発生する。私のアプリケーションが生成このRRULEで繰り返し日数が正しくないのはなぜですか?

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の場合、このイベントは木曜日の夕方に実際に最初のインスタンスになります。しかし、上記のように計算された2番目のインスタンスは、UTCの木曜日の時刻なので、水曜日のPST時です。

この特定の問題の他に、夏時間の変更についても心配する必要があります。あなたのイベントが実際にPSTタイムゾーンで行われている場合、上記のイベントは、DSTの移行が行われた後、11月に時間の変化が表示されます。

したがって、UTC(ズールー)時間を使用して定期的なイベントを表現することは、決してお勧めできません。

あなたは、あなたのイベントは、タイムゾーンとローカルタイムで表され、すなわち使用している必要があります

DTSTART;TZID="America/Los_Angeles":20170907T170000 
関連する問題