Rolf B: Problem mit date('j\.n\.Y', mktime ( 0, 0, 0, 2,date("t"), 2020));

Beitrag lesen

Hallo Friedel,

wenn Du den letzten Tag des Monats $monat (1..12) im Jahr $jahr bestimmen willst, dann ist

$lastDay = mktime(0, 0, 0, $monat+1, 0, $jahr);

die einfachere Lösung. Das funktioniert auch im Dezember, mktime(0,0,0,13,0,2020) liefert brav 31.

Ob Du nun die Funktionen für lokale Zeit oder Greenwich-Zeit verwendest, ist egal. Du musst nur darauf achten, dass Du bei einer Funktionenfamilie bleibt.

Und natürlich ist diese Rechnung nicht atomar. D.h. wenn Du deine Berechnung exakt zum Umschaltzeitpunkt zwischen Winter- und Sommerzeit ausführst, oder wenn der NTP Dienst die Serverzeit korrigiert, dann kann Dir ein blöder Server dazwischengrätschen und die Zeit zwischen zwei Funktionsaufrufen um eine Stunde verstellen. Ob weniger blöde Server automatisch dafür sorgen, dass während einer solchen Zeitkorrektur keine Webrequests bearbeitet werden, oder zumindest während der Verarbeitung eines Requests die Korrektur für PHP nicht sichtbar ist, weiß ich nicht. Würde mich aber interessieren - weiß das jemand?

Rolf

--
sumpsi - posui - obstruxi