2017-01-20 5 views
0

calendar.icsファイルからすべてのイベントを読み取り、すべてのイベントを表示するアプリケーションを開発しています。私のコードは個々のイベントで正常に動作し、すべてのイベントが含まれているので、ファイルからすべてのイベントを抽出できます。 しかし、定期的なイベントを作成すると、すべてのイベントではなくcalendar.icsファイルに"RRULE"が含まれているため、最初のイベントを除くすべてのイベントを取得できません。 私は"rfc2445.jar"を試してみましたが、うまくいかなかったかもしれませんが、それを使う方法がわかりません... すべてのイベントを解析して表示するのに役立つライブラリ/コード/メソッド/関数はありますか?上記 AndroidのRRULEからのicsファイルから定期的なイベントをすべてリストする/抽出する方法は?

CalendarBuilder builder = new CalendarBuilder(); 
Calendar calendar = null; 
calendar = builder.build(file); 
Log.d("RRULE 1: ", component.getProperty("RRULE").getName()); 
Log.d("RRULE 2: ", component.getProperty("RRULE").getValue()); 
Log.d("RRULE 3: DTSTART: ",component.getProperty("DTSTART").getValue()); 
Log.d("RRULE 4: DTEND: ", component.getProperty("DTEND").getValue()); 
....... 

は、私のコードの抜粋であり、私は次のような結果

D/RRULE 1:: RRULE 
D/RRULE 2:: FREQ=DAILY;COUNT=184 
D/RRULE 3: DTSTART:: 20160701T170000 
D/RRULE 4: DTEND:: 20160701T200000 

私はFREQからすべてのイベントを解析する方法がわからないのですか?

答えて

1

ライブラリlib-recurを使用することができます。次のように

(非常に)基本的な使い方(タイムゾーンを考慮していない)は次のようになります。

RecurrenceRule rule = new RecurrenceRule(component.getProperty("RRULE").getValue()); 
DateTime start = DateTime.parse(component.getProperty("DTSTART").getValue()); 
int maxInstances = 100; // limit instances for rules that recur forever 
RecurrenceRuleIterator it = rule.iterator(start); 
while (it.hasNext() && (!rule.isInfinite() || maxInstances-- > 0)) 
{ 
    DateTime nextInstance = it.nextDateTime(); 
    // do something with nextInstance 
} 

ライブラリは、複数のRRULE秒、EXRULE秒、EXDATE秒、RDATEsとタイムゾーンをサポートしています。

+0

ありがとう@Marten、私は別のライブラリを発見しました。 しかし、そのライブラリは私に定期的なイベントの終了日を与えませんでした。あなたのライブラリーを使って入手できますか? e、g 01/Feb - 30/Febから毎日繰り返されるイベント。開始時間11:00 pm - 終了時間01:00 am、イベントの終了日を取得できますか?この場合、開始日と終了日はイベントと同じではありません。 –

+0

私たちの図書館では、再発セットの最後のイベントの開始点しか教えてくれません。しかし、最後のイベントの終わりを得るために開始と終了の間のミリ秒数を追加することができます。 – Marten

関連する問題