Der Martin: php: Tage-Nachkommastellen zwischen zwei Datümern über die Zeitumstellung

Beitrag lesen

Hallo,

Mit der Formel

$tage = ( strtotime( "2019-10-15" ) - strtotime( "2019-08-22" ) ) /86400;

erhalte ich 54.

Beim tag_bis = "2019-12-02" erhalte ich 102.04166666667.

Die 4.../100stel Tage sind wohl die zusätzliche Stunde wegen der Zeitumstellung und ich könnte runden.

ja, richtig vermutet.

Aber kann php auch eine genaue Angabe machen zwischen zwei Datümern?

Die Angabe ist genau. ;-)
Wenn du sie nicht so genau willst, ist Runden ein brauchbarer Ansatz. Ein anderer wäre, die beiden Datumsangaben auf ein locale zu beziehen, das keine Sommer/Winter-Umstellung kennt, am besten UTC.

EDIT: Woher kennt php eigentlich die recht willkürliche, gesetzliche Zeitumstellung?

Vom Betriebssystem. Windows kennt die Zeitpunkte der Umstellung ja auch und stellt danach automatisch die Uhr um. Linux stellt zwar nicht die Uhr um (die läuft immer auf UTC), aber den Offset, mit dem zwischen UTC und Local Time umgerechnet wird.

So weit ich weiß, ist PHP fest auf meinem Server und fragt nicht bei Gesetzestexten nach. Wäre die Berechnung falsch, wenn sich die Rechtslage ändert?

Nein. Dann wäre in wenigen Tagen ein aktualisiertes tzdata-Modul verfügbar, das der Server-Admin einspielen würde.

Ciao,
 Martin

--
Computer müssen weiblich sein: Eigensinnig, schwer zu durchschauen, immer für Überraschungen gut - aber man möchte sie nicht missen.