Datumsberechnung
chris
- php
Hallo
Ich möchte von einem gegebenen Datum vom Format 2002-12-30 eine bestimmte Anzahl Tage hinzuzählen oder subtrahieren. Gibt es da eine Funktion die automatisch Monats, Jahreswechsel, sowie Schaltjahre berücksichtigt? Nehmen wir an ich habe das Datum 2002-12-30. Nun möchte ich 3 Tag dazuzählen. Wie lautet nun der korrekte Befehl, dass mir das Script als neuen Wert das Datum 2003-01-02 zurückgibt? Vielen Dank für jede Hilfe!
Gruss Chris
Ich möchte von einem gegebenen Datum vom Format 2002-12-30 eine bestimmte Anzahl Tage hinzuzählen oder subtrahieren. Gibt es da eine Funktion die automatisch Monats, Jahreswechsel, sowie Schaltjahre berücksichtigt? [..] Wie lautet nun der korrekte Befehl, dass mir das Script als neuen Wert das Datum 2003-01-02 zurückgibt?
"mktime() ist hilfreich bei Datumsberechnungen und -überprüfungen, da
automatisch das korrekte Datum für ungültige Angaben berechnet wird."
PHP-Anleitung, http://www.php.net/manual/de/function.mktime.php
Den Text zu zerlegen wirst Du sicherlich selbst schaffen. Falls nicht: Wirf mal einen Blick in die PHP-Anleitung, Kapitel String-Funktionen.
Gruß,
soenk.e
hi,
ich nehme an, das ist ein string ("2002-12-30").
umwandeln in einen unix-timestamp mit mktime (siehe php.net) - uhrzeit kannst du auf 0 lassen.
das ergebnis ist unix-timestamp, also in den meisten fällen sekunden seit dem 1.1.1970. Da kannst du nun einfach 3 Tage * 24 Stunden * 60 Minuten * 60 Sekunden = 3*24*3600 dazuzählen.
Das Ergebnis kriegst du mit dem befehl date("Y-m-d", $unixtimestamp) wieder in die Form 2002-01-02-
LG,
gerhardii
das ergebnis ist unix-timestamp, also in den meisten fällen sekunden seit dem 1.1.1970. Da kannst du nun einfach 3 Tage * 24 Stunden * 60 Minuten * 60 Sekunden = 3*24*3600 dazuzählen.
Das geht nicht. Es gibt zwei Tage im Jahr, die 25 bzw 23 Stunden haben.
Gruß,
soenk.e
Das geht nicht. Es gibt zwei Tage im Jahr, die 25 bzw 23 Stunden haben.
Hallo Sönke,
das mach ich schon seit jahren so, aber an das hab ich noch nie gedacht... da sind wohl einige seiten zu überarbeiten!
ich denke da in erster linie mal an mktime - das nimmt doch "ungültige" tag-angaben entgegen und interpretiert diese korrekt. Weisst du, ob mktime die Sommer-/Winterzeit hier korrekt berücksichtigt? Wie machst du das?
LG,
gerhardii
Das geht nicht. Es gibt zwei Tage im Jahr, die 25 bzw 23 Stunden haben.
ich denke da in erster linie mal an mktime - das nimmt doch "ungültige" tag-angaben entgegen und interpretiert diese korrekt. Weisst du, ob mktime die Sommer-/Winterzeit hier korrekt berücksichtigt?
Ich gehe mal davon aus, daß es das macht - wenn die Rechnerei schon angepriesen wird, sollte das wohl auch vernünftig funktionieren. Außerdem ist PHP-mktime() anscheinend nur eine Durchreiche zur gleichnahmigen Funktion des Betriebssystems.
Mit
function addhour($ticks,$hours=1,$minutes=0)
{
$clock=getdate($ticks);
return mktime($clock["hours"]+$hours,$clock["minutes"]+$minutes,$clock["seconds"],$clock["mon"],$clock["mday"],$clock["year"]);
};
hatte ich bisher jedenfalls noch keine Probleme. Kann aber sein, daß ich die Funktion erst kurz nach der letzten Zeitumstellung gebastelt habe (obwohl ich der problematische Zeitraum in meinem Fall mehrere Wochen um die Umstellung herum .
Gruß,
soenk.e
Hallo!
Das geht nicht. Es gibt zwei Tage im Jahr, die 25 bzw 23 Stunden haben.
Daran hatte ich nie gedacht, Danke für den Hinweis! Die Version von von http://php-faq.de/q/q-datum-gestern.html sollte aber doch funktionieren, oder?
Grüße
Andreas
Hallo!
Ich möchte von einem gegebenen Datum vom Format 2002-12-30 eine bestimmte Anzahl Tage hinzuzählen oder subtrahieren. Gibt es da eine Funktion die automatisch Monats, Jahreswechsel, sowie Schaltjahre berücksichtigt? Nehmen wir an ich habe das Datum 2002-12-30. Nun möchte ich 3 Tag dazuzählen. Wie lautet nun der korrekte Befehl, dass mir das Script als neuen Wert das Datum 2003-01-02 zurückgibt?
Es kommt drauf an in welchem Format das Datum vorliegt. Am einfachsten wäre ein unix-Timestamp, da könntest Du dann einfach 3 Tage x 24 Stunden x 60 Minuten x 60 Sekunden hinzuaddieren und dann mit http://php3.de/manual/de/function.date.php das Datum formatieren wie Du willst.
Wenn Das Datum anders vorliegt muss es erst in einen solchen Timestamp umgewandelt werden, z.B. mit http://php3.de/manual/de/function.strtotime.php oder http://php3.de/manual/de/function.mktime.php.
Bestimmt hilft Dir auch: http://php-faq.de/q/q-datum-gestern.html
Grüße
Andreas