如果我使用谷歌圖書館google-rfc-2445(計算出現)日曆。經常性事件發生。如何檢查模式上匹配的開始日期?
String sRule = "RRULE:FREQ=YEARLY;COUNT=3;INTERVAL=2;BYMONTH=5;BYMONTHDAY=22,23,24,25,26,27,28;BYDAY=MO";
LocalDateIterable localDateIterable = LocalDateIteratorFactory
.createLocalDateIterable(sRule, org.joda.time.LocalDate.now(), true);
LocalDateIterator iterator = localDateIterable.iterator();
iterator.forEachRemaining(System.out::println);
我會得到結果:
2017年7月17日
2019年5月27日
2021-05-24
2023-05-22
考慮模式,應該只有3個日期。考慮到每一個我們可以發現,第一個是多餘的。如果開始日期有效或沒有,我沒有標記。正如你看到的第一個不是。 (如果我使用正確的開始日期創建可迭代的,我會得到的結果是3周正確的日期。)
類似實驗lib-recur(結果幾乎與小的差異相似)
RecurrenceRule recurrenceRule = new RecurrenceRule("FREQ=YEARLY;BYMONTHDAY=23;BYMONTH=5;COUNT=3");
RecurrenceRuleIterator it = recurrenceRule.iterator(DateTime.nowAndHere());
int maxInstances = 10; // limit instances for rules that recur forever
while (it.hasNext() && (!recurrenceRule.isInfinite() || maxInstances-- > 0)) {
DateTime nextInstance = it.nextDateTime();
System.out.println(nextInstance);
}
結果數是正確的,但第一次出現不是。第一次出現的正確性取決於(如果開始日期是正確的第一次出現也將是正確的)...
20170717T123104
20190527T123104
20210524T123104
我怎麼能指定或使用google-rfc-2445或lib-recur以正確方式驗證開始日期?
將「固定」 FTR:0.10版本剛剛發佈,並'RecurrenceRuleIterator'不再返回開始不匹配'RRULE'實例。 – Marten