dedlfix: Zeitabstand richtig ermitteln

Beitrag lesen

echo $begrüßung;

Das ist richtig, date() interprettiert nicht mögliche Werte so, dass sie möglich werden.

Für date() gibt es keine nicht möglichen Werte. date() nimmt einen Unix-Timestamp entgegen, der einen auf die Sekunde genauen Zeitpunkt (Schaltsekunden werden nicht gezählt) als Distanz zum 1.1.1970 0 Uhr UTC angibt. Ungültige Zeiten (z.B. 25 Uhr, 30. Februar) lassen sich mit einem Unix-Timestamp nicht darstellen, also kann date() auch keine unmöglichen Werte daraus interpretieren.

date() gibt eben Zeitpunkte wieder und keinen Zeitraum.

Oder genauer gesagt: date() interpretiert das Argument als Zeitpunkt.

Ggf. könntest du das mit / und % lösen, aber ich befürchte dass da Ungenauigkeiten hinein kommen (Schaltjahre und so weiter).

Wenn man zwei Unix-Timestamps hat, und die Differenz daraus ermittelt, bekommt man die Anzahl der Sekunden. Diese ist immer unabhängig von Schaltjahren oder Sommerzeiten. Man kann im Prinzip nur diese Sekundenanzahl in Stunden, Minuten und (restlichen) Sekunden aufteilen. Unter der Annahme, ein Tag habe 24 Stunden, kann man auch noch Tage ausrechnen. Aber Monate sind für eine Differenz nicht mehr sinnvoll ermittelbar. Es sei denn, man legt fest, ein Monat habe 30 Tage. Analoges gilt für Jahre.

Aber je größer eine Differenz ist, destoweniger interessieren im Allgemeinen diese durch die Sonderfälle bedingten Abweichungen.

Allerdings klingt deine anfängliche Beschreibung so, als bräuchtest du diese ganzen Werte nicht. Wenn es nur um die Identifikation eines Zeitpunkts geht, dass ist der Timestamp ansich (also die Zeit oder Differenz in Sekunden) doch ausreichend.

Im PHP-Handbuch findet sich eine Klasse namens DateInterval. Allerdings gibt es die erst mit PHP 5.3 und beschrieben ist sie im Manual derzeit noch nicht. DateInterval::format() klingt zumindest vom Namen her, als ob es der OP brauchen könnte.

echo "$verabschiedung $name";