Falsche Datumsanzeige
Illya
- php
Hallo, ich habe hier ein wirklich komisches Problem, es betrifft die Datumsfunktion, den 31.10.2004! Ich habe ein PHP-Script geschrieben der aus einer DB ein Datum holt und eine Anzahl von Tagen zu diesem Datum hinzuaddiert, eigentlich hat es bis jetzt immer funktioniert und ist auch nichts kompliziertes daran, aber er berechnet ein Datum nicht richtig!!! Hier erstmal das Script, es läuft auch online unter: http://trade.morada.de/angebot/bischofsmais2004aktiv/test.php
PHP-Code, es sollen 2 Tage hinzuaddiert werden, beide Ergebnisse sind aber IDENTISCH!:
<? $termin="2004-10-29"; list ($jahr,$monat,$tag)=split("[-]",$termin); $stempel=mktime(0,0,0,$monat,$tag,$jahr); #$uebernachtung=$row["uebernachtung"]; $uebernachtung=2; $stempel=$stempel+86400*$uebernachtung; $termin_bis=date("d.m.Y",$stempel); echo "$termin - $termin_bis<br>"; echo "Tage addiert: $uebernachtung<hr>";
$termin="2004-10-30"; list ($jahr,$monat,$tag)=split("[-]",$termin); $stempel=mktime(0,0,0,$monat,$tag,$jahr); #$uebernachtung=$row["uebernachtung"]; $uebernachtung=2; $stempel=$stempel+86400*$uebernachtung; $termin_bis=date("d.m.Y",$stempel); echo "$termin - $termin_bis<br>"; echo "Tage addiert: $uebernachtung"; ?> Ich bin ziemlich ratlos, bei der 2.Ausgabe müsste eigentlich der 01.11.2004 herauskommen, es bleibt aber beim 31.10.2004. Wenn man die Tage erhöht, fehlt immer ein Tag, wenn ich zum Bsp. 8 Tage hinzuaddiere, landet er am 06.11.2004, richtig wäre aber der 07.11.2004 HILFE Da ich diesen Fehler das erste mal sehe und es vorher immer funktioniert hat, wundert mich das schon ARRRGH! Wenn mir einer helfen könnte wäre echt SUPER, vielen Dank im Voraus, Illya
Hello,
ich bin auch noch blind, zumal ich mir die Zeitstempel nochmals zur Kontrolle ausgeben lassen habe und dafür
Zeitstempel origial: 1099000800
Zeitstempel addiert: 1099173600
2004-10-29 - 31.10.2004
Tage addiert: 2
--------------------------------------------------------------------------------
Zeitstempel original: 1099087200
Zeitstempel addiert: 1099260000
2004-10-30 - 31.10.2004
Tage addiert: 2
erhalte.
Das bedeutet, dass die date()-Funktion für zwei verschiedene Zeitstempel asselbe Datum ausgibt. Das erinnert mich an den 04. Oktober 1582: http://www.ptb.de/de/org/4/44/441/greg.htm
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello Ilja,
nochmal etwas klarer dargestellt:
echo "Datum für 1099173600: ".date('d.m.Y', 1099173600)."<br>";
echo "Datum für 1099260000: ".date('d.m.Y', 1099260000)."<br>";
echo "Datum für 1099263600: ".date('d.m.Y', 1099263600)."<br>";
egibt die Ausgabe:
Datum für 1099173600: 31.10.2004
Datum für 1099260000: 31.10.2004
Datum für 1099263600: 01.11.2004
Dämmerts nun?
warum nimmst Du nicht
echo date('d.m.Y',strtotime('2004-10-30 + 2 days'));
Harzliche Grüße aus http://www.annerschbarrich.de
Tom