如何用Java解析iCal RRULE

Ser*_*gii 3 java icalendar rrule

我有以下iCal重复规则示例:

"RRULE:FREQ=YEARLY;INTERVAL=2"
"RRULE:FREQ=WEEKLY;INTERVAL=2;BYDAY=TU,WE,TH"
Run Code Online (Sandbox Code Playgroud)

我需要一个Java库来解析要在对象中处理的RRULE模式。有没有好的Java库?


Ckr*_*ram 7

您可以使用lib-recur

它仍然受支持并处理RFC 5545和RFC 2445。

RecurrenceRule rule = new RecurrenceRule("FREQ=YEARLY;BYMONTHDAY=23;BYMONTH=5");

DateTime start = new DateTime(1982, 4 /* 0-based month numbers! */,23);

RecurrenceRuleIterator it = rule.iterator(start);

int maxInstances = 100; // limit instances for rules that recur forever

while (it.hasNext() && (!rule.isInfinite() || maxInstances-- > 0))
{
    DateTime nextInstance = it.nextDateTime();
    // do something with nextInstance
}
Run Code Online (Sandbox Code Playgroud)

您可以使用Maven安装它

<!-- https://mvnrepository.com/artifact/org.dmfs/lib-recur -->
<dependency>
    <groupId>org.dmfs</groupId>
    <artifactId>lib-recur</artifactId>
     <version>0.10.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

或与gradle

// https://mvnrepository.com/artifact/org.dmfs/lib-recur 
compile group: 'org.dmfs', name: 'lib-recur', version: '0.10.2'
Run Code Online (Sandbox Code Playgroud)

此处提供了更多文档:https : //github.com/dmfs/lib-recur


Ser*_*gii 5

解决方案是使用

        <dependency>
            <groupId>org.scala-saddle</groupId>
            <artifactId>google-rfc-2445</artifactId>
            <version>20110304</version>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

几个例子:

1 转换为java对象:

rule = new RRule("RRULE:FREQ=WEEKLY;INTERVAL=2;BYDAY=TU,WE,TH");
Run Code Online (Sandbox Code Playgroud)

2 转换回来:

rule.toIcal();
Run Code Online (Sandbox Code Playgroud)