Fehler in date() oder strtotime() Funktion?

Sprint

Erfahrenes Mitglied
Hallo,

auf einer meiner Seiten ist mir heute ein merkwürdiges Verhalten der date() oder der strtotime() Funktion aufgefallen.
Um den Anzeigebereich von Artikeln zu begrenzen, kann ein Ablaufdatum angegeben werden. Wird im CMS nichts eingetragen, soll der Artikel unbegrenzt angezeigt werden. Dazu wird dann in die Datenbank der 31.12.2099 eingetragen. Wird der Artikel später für eine Änderung aufgerufen, wird in die Formularfelder als Ablaufdatum der 01.01.1970 geschrieben. Da in der DB das richtige Datum drinsteht und auch nähere Daten, wie z.B. der 31.12.2010, richtig in die Felder eingetragen werden, muß das Problem also bei einer der beiden Funktionen liegen.

Ist da irgend ein Fehler bekannt oder woran liegt das?
 
PHP:
<input type="text" name="tag" value="<?php echo date('d', strtotime($zeile[ablauf])); ?>" size="2" maxlength="2"">. 
<input type="text" name="monat" value="<?php echo date('m', strtotime($zeile[ablauf])); ?>" size="2" maxlength="2">. 
<input type="text" name="jahr" value="<?php echo date('Y', strtotime($zeile[ablauf])); ?>" size="4" maxlength="4">
Daran kann es aber eigentlich nicht liegen, da wie gesagt näher liegende Termine richtig eingetragen werden.
 
Um ehrlich zu sein ich verstehe nicht was du überhaupt machen willst bzw. wo das genaue Problem liegt. Beschreib das doch mal ein bisschen genauer, dann findet sich auch eine Lösung.

NACHTRAG:
Sollte es nur beim Datum 31.12.2099 liegen schau mal diesen Hinweis bei der date-Funktion an.

Hinweis: Der gültige Bereich eines Timestamp liegt typischerweise zwischen Fri, 13 Dec 1901 20:45:54 GMT und Tue, 19 Jan 2038 03:14:07 GMT. (Das entspricht den minimalen und maximalen Werten für einen vorzeichenbehafteten 32-Bit Integer). Unter Windows-Betriebssytemen ist dieser Bereich auf 01-01-1970 bis 19-01-2038 beschränkt.

Quelle: http://de.php.net/manual/de/function.date.php
 
Zuletzt bearbeitet:
Was steht in $zeile[ablauf]?
Schmeiss doch mal die folgende Zeile in deinen Code und poste hier die entsprechende Ausgabe:
PHP:
vardump($zeile[ablauf]);
 
NACHTRAG:
Sollte es nur beim Datum 31.12.2099 liegen schau mal diesen Hinweis bei der date-Funktion an.

Hinweis: Der gültige Bereich eines Timestamp liegt typischerweise zwischen Fri, 13 Dec 1901 20:45:54 GMT und Tue, 19 Jan 2038 03:14:07 GMT. (Das entspricht den minimalen und maximalen Werten für einen vorzeichenbehafteten 32-Bit Integer). Unter Windows-Betriebssytemen ist dieser Bereich auf 01-01-1970 bis 19-01-2038 beschränkt.

Quelle: http://de.php.net/manual/de/function.date.php

Danke für den Hinweis. Es lag definitiv nur am Datum. Der 19.01.2038 wird richtig verarbeitet.

Bin ja mal gespannt, was die danach machen werden. Ist ja sooo weit nicht mehr und die meisten von uns werden das noch erleben.
 
[offtopic]
Naja, 32Bit waren viel, als der Timestamp erfunden wurde. Bis 2038 sollte es ein einfaches sein, die Sache auf 64Bit zu erweitern und damit

((((2^64) / 60) / 60) / 24) / 365 = 5.84942417 × 10^11 Jahre darstellen zu können

mfg chmee
 
Zurück