2016-06-10 2 views

Antwort

1

Ich stimme Evert zu, dass dies mit einem einzigen RRULE nicht möglich ist.

Dies können Sie jedoch mit einer Kombination mehrerer RRULEs erreichen.

diese Weise können Sie Ihre Veranstaltung in mehrere Veranstaltungen jeder mit einer der RRULEs unten aufspalten:

Wenn Mittwoch auf der letzten oder vorletzten Tag eines Monats fällt, unser Freitag den 1. oder 2. sein, im nächsten Monat

FREQ=MONTHLY;BYMONTHDAY=1,2;BYDAY=1FR 

In Monaten mit 31 Tagen der früheste Termin für die am vergangenen Mittwoch ist der 25., so dass der nächste Freitag eine Tages 27-31 sein wird:

FREQ=MONTHLY;BYMONTH=1,3,5,7,8,10,12;BYMONTHDAY=27,28,29,30,31;BYDAY=FR 

In Monaten mit 30 Tagen wurde das früheste Datum für letzten Mittwoch ist der 24., so dass der nächste Freitag eine Tages 26-30 wird:

FREQ=MONTHLY;BYMONTH=4,6,9,11;BYMONTHDAY=26,27,28,29,30;BYDAY=FR 

Februar ist verzwickt, weil in Nicht-Schaltjahren der der Freitag, den wir wollen, wird zwischen dem 24. und 28. sein, aber in Schaltjahren ist es zwischen dem 25. und 29.. Doch innerhalb der nächsten 50 Jahre nur ein Schaltjahr ist, in der 24. Februar ein Freitag ist, die 2040 (überprüfen Sie das Ergebnis von FREQ=MONTHLY;BYMONTHDAY=24;BYMONTH=2;BYDAY=FR out), so dass die folgenden RRULE richtig sein, bis 2040:

FREQ=MONTHLY;BYMONTH=2;BYMONTHDAY=24,25,26,27,28,29;BYDAY=FR 

wenn Sie besorgt über die Schaltjahre sind, fügen Sie ein EXDATE wie unten und Sie sind gut für die nächsten 100 Jahre (machen diese DATE-TIME-Werte, wenn Sie das Startdatum einer Zeit hat):

EXDATE;VALUE=DATE:20400224,20680224,20960224,21080224 

wenn Sie Sie müssen sicher sein, dass Ihre Clients mehrere RRULEs unterstützen (was in RFC 5545 halbherzig abgelehnt wurde, aber inimmer noch absolut gültig war)) Sie könnten sie auch zu einem einzelnen Ereignis hinzufügen, aber ich würde das nicht empfehlen.

Verwandte Themen