[Funktion(en), Modul: Cal] Algorithmus für wiederkehrende Termine

PHP Codeschnispel und Beispiel Codes.
k00ni
Beiträge: 1474
Registriert: 22. Juni 2006, 16:44
Kontaktdaten:

[Funktion(en), Modul: Cal] Algorithmus für wiederkehrende Termine

Beitrag von k00ni » 15. September 2007, 10:53

Ich wusste es, dass wieder einer besser ist :-O

Ich habe mir mal ein paar Gedanken gemacht, wie man das noch angehen könnte, so ohne Schleife. Dabei könnte man es auch folgendermaßen machen:

Ein Monat ist ja mindestens 4 Wochen, maximal 6 Wochen lang. Daraus könnte man folgendes Bild erstellen (36-40 sind die Nummern der Wochen aufs Jahr bezogen; ca. 52 Wochen maximal glaub ich):

Code: Alles auswählen

1. Woche: 36
2. Woche: 37
3. Woche: 38 (X)
4. Woche: 39
5. Woche: 40
Der übergebene Timestamp liegt in der Woche 3, Nummer 38.Man braucht da eigentlich nun nur noch folgendes rechnen:

40 - 36 = 4.

Da wir hier aber schon bei 36 die erste Woche haben, dass Ergebnis um 1 erhöhen. Also 5 (Gesamtanzahl der Wochen).

Nun rechnen wir folgendes:

40 - 38 = 2.

Damit haben wir nun die Differenz zwischen der Woche, in der der Timestamp liegt und der letzten Woche des Monats.

5 (Gesamtanzahl) - 2 (Differenz) = 3

[hr]

Der übergebene Timestamp liegt in der dritten Woche des Monats. Das ist ein anderer Ansatz und ich weiß nicht, ob er auch sauber läuft (man denke an Winter und Sommerzeit). Aber eigentlich dürfte da nichts schiefgehen, da die Daten ja per date und mktime ermittelt werden und diese ja sehr präzise arbeiten.


UPDATE: Hier nun der zugehörige Quelltext (ungetestet):

Code: Alles auswählen

 Letzte Woche - erste Woche + 1 = Gesamtanzahl Wochen; 
	// > Letzte Woche - Timestamp-Woche = Differenz zur letzten Woche.
	// --> Gesamtanzahl Wochen - Differenz zur letzten Woche = Nummer der Timestamp-Woche. (1-6)
	return $I_last_week_in_month - $I_first_week_in_month + 1 - ($I_last_week_in_month - $I_timestamp_week);
}
?>
Die Ermittlung von $I_last_week_in_month ist etwas unschön. Nur wie will man sonst die letzte Woche sauber bestimmen? Problem ist hier der Februar und dass er bswp. im Schaltjahr 29 statt 28 Tage hat.

k00ni
Beiträge: 1474
Registriert: 22. Juni 2006, 16:44
Kontaktdaten:

[Funktion(en), Modul: Cal] Algorithmus für wiederkehrende Termine

Beitrag von k00ni » 15. September 2007, 11:39

Sowas gibt man ja auch nicht ein :-O

Wo könnte man das abfangen oder wo liegt der Fehler?

k00ni
Beiträge: 1474
Registriert: 22. Juni 2006, 16:44
Kontaktdaten:

[Funktion(en), Modul: Cal] Algorithmus für wiederkehrende Termine

Beitrag von k00ni » 15. September 2007, 11:49

[quote]Die Ermittlung von $I_last_week_in_month ist etwas unschön. Nur wie will man sonst die letzte Woche sauber bestimmen?[/quote]

Könnte man das nicht mit strtotime () umgehen? Gibts da die Möglichkeit mit etwas wie "last day in month" oder ähnlichen, sich den letzten Tag ermitteln zu lassen?


Grüße

Antworten