Falsche Datumberechnung mit php?!

Falsche Datumberechnung mit php?!

am 22.10.2006 11:43:57 von naturman

Hallo,

ich weiss nicht mehr, was ich dagegen tun kann. Ich habe ein Ausgangsdatum
und möchte spätere Datums berechnen. Dabei macht php Fehler:

$starttest = strtotime('2006-10-01');
$pm27 = strftime("%Y-%m-%d",$starttest+27*86400);
$pm28 = strftime("%Y-%m-%d",$starttest+28*86400);
$pm29 = strftime("%Y-%m-%d",$starttest+29*86400);
$pm30 = strftime("%Y-%m-%d",$starttest+30*86400);
echo"($pm27)($pm28)($pm29)($pm30)
";

Die Ausgabe zeigt für $pm28 und $pm29 den gleichen Wert: 2006-10-29
Das geschieht aber nur bei Startdatum '2006-10-01'. Bei Start '2006-12-01'
stimmt alles.

Woran liegt das? Wie kann ich das verhindern?

Vielen Dank für Hilfe.

Re: Falsche Datumberechnung mit php?!

am 22.10.2006 11:53:26 von Jens Riedel

> ich weiss nicht mehr, was ich dagegen tun kann. Ich habe ein Ausgangsdatum
> und möchte spätere Datums berechnen. Dabei macht php Fehler:

Nein, PHP macht alles korrekt.

>
> $starttest = strtotime('2006-10-01');
> $pm27 = strftime("%Y-%m-%d",$starttest+27*86400);
> $pm28 = strftime("%Y-%m-%d",$starttest+28*86400);
> $pm29 = strftime("%Y-%m-%d",$starttest+29*86400);
> $pm30 = strftime("%Y-%m-%d",$starttest+30*86400);
> echo"($pm27)($pm28)($pm29)($pm30)
";
>
> Die Ausgabe zeigt für $pm28 und $pm29 den gleichen Wert: 2006-10-29
> Das geschieht aber nur bei Startdatum '2006-10-01'. Bei Start '2006-12-01'
> stimmt alles.
>
> Woran liegt das?

Schau mal in den Kalender und überlege, welche Besonderheit am 29.10.
ansteht. Kleiner Tip: letzter Sonntag im Oktober.

> Wie kann ich das verhindern?

Berücksichtige das oben genannte Phänomen ;-)

Gruß,
Jens




--
Der Kluegere gibt nach - Eine traurige Wahrheit:
sie begruendet die Weltherrschaft der Dummen.
- Marie von Ebner-Eschenbach

Re: Falsche Datumberechnung mit php?!

am 22.10.2006 12:06:52 von Carsten Wiedmann

Alfred Weber schrieb:

> $starttest = strtotime('2006-10-01');
> $pm27 = strftime("%Y-%m-%d",$starttest+27*86400);
> $pm28 = strftime("%Y-%m-%d",$starttest+28*86400);
> $pm29 = strftime("%Y-%m-%d",$starttest+29*86400);
> $pm30 = strftime("%Y-%m-%d",$starttest+30*86400);
> echo"($pm27)($pm28)($pm29)($pm30)
";

Warum lässt du dir die späteren Datums nicht gleich von strtotime() ausgeben
(das rechnet korrekt...)?

| $pm27 = strftime('%Y-%m-%d', strtotime('2006-10-01 +27 days'));

Gruß
Carsten

Re: Falsche Datumberechnung mit php?!

am 22.10.2006 12:08:34 von naturman

Klar, wieso bin ich nicht selbst darauf gekommen?
Vielen Dank für die schnelle Antwort.

Re: Falsche Datumberechnung mit php?!

am 22.10.2006 12:13:46 von naturman

Hey, danke
das ist auch eine sehr gute Lösung.