Wenn ich Google-Bibliothek verwenden google-rfc-2445 (um Ereignisse zu berechnen)Kalender. Wiederkehrendes Ereignis. Wie überprüft man, ob das Startdatum dem Muster entspricht?
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);
ich in Folge bekommen:
2017-07-17
2019-05-27
2021-05-24
2023-05-22
unter Berücksichtigung Muster, es sollte nur 3 Daten sein. In Anbetracht jedes einzelnen können wir feststellen, dass der erste überflüssig ist. Ich habe keine Markierung, wenn das Startdatum gültig ist oder nicht. Und wie du zuerst siehst, ist es nicht. (Wenn ich die Schaffung iterable richtiges Startdatum nicht mehr verwenden würde ich 3 richtige Daten in Ergebnis.)
ähnliches Experiment mit lib-recur (Ergebnis fast ähnlich mit kleinen Unterschieden)
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);
}
Ergebnis Zahl korrekt ist, aber erstes Vorkommen ist nicht. Die Korrektheit des ersten Auftretens hängt davon ab, (wenn Startdatum auch korrekt erstes Auftreten wäre richtig) ...
20170717T123104
20190527T123104
20210524T123104
Wie könnte ich angeben oder das Startdatum korrekt mit google-rfc-2445 oder lib-recur validieren?
FTR „fixiert“ werden: Version 0.10 wurde gerade nicht freigegeben und 'RecurrenceRuleIterator' länger kehrt starten Instanzen nicht die' RRULE' entsprechen. – Marten