Hi,
ich habe ein Ausgangsdatum
X
vorliegen und ich habe eine KalenderwocheY
vorliegen, das sich chronologisch hinter dem X-Datum befindet.
Das läßt darauf schließen, daß Y nicht nur "KW 33" ist, sondern daß es um die Kalenderwoche eines konkreten Jahres geht, also z.B. KW 33/2018.
Dann könnte man das Datum des 1. und letzten Tages von Y errechnen, als Y1 und YL.
Für Wiederholung day und week kommt ja eh immer true raus, das kann man schon vorher abhandeln.
Für month: falls Y1 < YL (sprich: die KW ist komplett im Monat): nimm den Tag im Monat des Ausgangsdatums X (TiM(X)), ist er größergleich dem TiM(Y1) und kleinergleich dem TiM(YL), hast Du einen Treffer.
falls Y1 > YL (sprich: KW geht über die Monatsgrenze): falls TiM(X) > TiM(Y1) oder TiM(X) < TiM(YL) hast Du einen Treffer.
falls Y1 == YL: Y1 und Y2 nochmal neu berechnen, diesmal aber korrekt 😉
(Sonderbehandlung, falls TiM(X) > 28 und Y fällt in Februar überlasse ich Dir)
Für year: ähnliche Vorgehensweise, nur diesmal auch noch den Monat berücksichtigen. Evtl. das X' aus X erzeugen mit X' im selben Jahr wie Y (wegen Schaltjahr ...). Dann kann man statt des TiM das Julianische Dingens (Tag im Jahr) benutzen.
cu,
Andreas a/k/a MudGuard