PHP: Datumsfunktionen?

Josh

Legendäres Mitglied
Hi alle!

Ich wundere mich, warum es in PHP standardmässig keine Funktionen gibt, um z.B. die Differenz zwischen 2 Daten auszurechnen, oder zu einem Datum X Tage hinzuzurechnen etc...
Oracle und Co. bieten da extrem viele Möglichkeiten mehr... Funktionen wie is_leap_year() oder add_days_to_date() etc...

Wie löst ihr eure Berechnungen mit "Datümmern"?
tongue.gif

Ich überlege mir, ob ich da eine eigene Klassen für proggen will, aber auf Google sah ich auch die eine oder andere fertige Klasse dafür...

Grüsse
Josh
 
Meines Wissens (hab es nicht ausprobiert) müsste man doch einfach Datum1 von Datum2 subtrahieren.

Oder geht das nicht?
 
QUOTE Ich wundere mich, warum es in PHP standardmässig keine Funktionen gibt, um z.B. die Differenz zwischen 2 Daten auszurechnen, oder zu einem Datum X Tage hinzuzurechnen etc...
Oracle und Co. bieten da extrem viele Möglichkeiten mehr... Funktionen wie is_leap_year() oder add_days_to_date() etc...


Ich speicher einfach immer im Timestamp-Format ab. Das ist exakt (Sekunden seit 1970) und es gibt keine Probleme. Rechnen kann man damit wunderbar.
Wenn du mit einem Datum rechnen willst, konvertierst du einfach auf Timestamp, rechne und konvertier wieder zurück.


QUOTE Ich wundere mich, warum es in PHP standardmässig keine Funktionen gibt, um z.B. die Differenz zwischen 2 Daten auszurechnen, oder zu einem Datum X Tage hinzuzurechnen

Dann müsste es aber ein exakt definiertes Format geben, damit die Funktion auch ordentlich rechnen kann. Die Deutschen schreiben Daten anders als Amerikaner, etc.
 
Jopp, mache es genauso wie Ansgar.
Timestamp ist da sehr gut zu gebrauchen, da man mit den Sekunden einfach rechnen kann und zur Anzeige nimmt man einfach die date-Funktion von PHP. Damit kann man das Datum auch seinen Wünschen entsprechend anpassen.
Kenne einige, die lieber in MySQL den "Date"-Datentyp benutzen und alles damit handeln, aber ich finde Timestamps einfach praktischer, da ich dann auch auf PHP-Ebene besser und vor allem schneller mit umgehen kann.
 
@ ChDo:
gib beispiel, please.

@ ansgar & mike:
danke für die meinungen. timestamp ist gut und recht, solange man nicht mit daten ausserhalb dessen range rechnen muss!
tongue.gif
 
OK, da hast natürlich recht.
Für Geburtstage oder Datierungen, die vor dem 1.1.1970 liegen ist es sehr unpraktisch. Gibt zwar auch Timestamps die seit 1.1.1900 rechnen (ist das nciht sogar der eigentlich "echte" Unix-Timestamp? Bin mir grad nicht sicher), aber allein aus Kompatiblitätsgründen ist es nicht unbedingt zu empfehlen.
Wenn ich da dann rechnen muss (zB Geburtsdaten
wink.gif
), zerlege ich die Daten auf PHP-Basis (zB mit explode). Aber wie du schon sagtest, gibt da auch umfassende Lösungen für...
 
Ich meinte, wenn die zwei Daten im gleichen Format sind, z.B. 2004-12-30, dann kann man sie einfach subtrahieren.

CODE $date1 = 2004-12-30;
$date2 = 2005-01-05;
$unterschied = $date1 - $date2;
 
QUOTE Ich meinte, wenn die zwei Daten im gleichen Format sind, z.B. 2004-12-30, dann kann man sie einfach subtrahieren.


Folgender Test:

CODE $date1 = 2004-12-30;
$date2 = 2005-01-05;
$unterschied = $date1 - $date2;

echo " $date1 <br /> $date2 <br /> $unterschied";

Ergebnis:

CODE 1962
1999
-37


Ich hoffe, du verwendest das nicht in deiner Buchhaltungssoftware. ;-)
Meine Empfehlung: Erst kurz testen, dann posten.
 
QUOTE Ich hab ja geschrieben dass ich es nicht getestet habe, aber dass das so schief rauskommt

Das Ergebnis ist recht logisch:
2004-12-30 ergibt 1962
und
2004-1-5 ergibt 1999.

Zieht man dann von 1962 1999 ab, ergibt es -37.

Du hast einfach nur mit php gerechnet.
 
Zurück
Oben