Florian: Probleme mit der Zeitbestimmung

Folgendes habe ich eingegeben:

$jetzt = time();  
$datum = strftime("%d.%m.%Y",$jetzt);  
$tag = strftime("%d",$jetzt);  
$monat = strftime("%m",$jetzt);  
$jahr = strftime("%Y",$jetzt);  
.  
.  
.  
mysql_query("insert tabelle(datum, tag, monat, jahr)  
values ('$datum', '$tag', $monat', '$jahr')");

Das Ergebnis ist für datum 2017-17-20 und jeweils für tag, monat und jahr 0000-00-00.
Wo ist der Fehler?

Danke

  1. Hallo,

    Wo ist der Fehler?

    Ohne jetzt ganz sicher zu sein, glaube ich zu wissen, dass time() nur die Sekunden seit der "Unixepoche" angibt, strftime aber einen Unix Timestamp verlangt. Ich empfehle dir also einfach einmal das Kapitel Date/Time im PHP-Manual durchzulesen und noch einmal nachzufragen, wenn etwas unklar bleibt.
    Eine weitere Idee wäre es, das Datum überhaupt als Unix Timestamp zu speichern und MySQL mit dem Datum umgehen zu lassen. Informationen dazu gibt es sicher in der MySQL Dokumentation.

    gruß,
    Severin

    --
    Realität ist das, was nicht verschwindet, wenn man aufhört, daran zu glauben.
    --Philip K. Dick
    1. Hallo Severin,

      Ohne jetzt ganz sicher zu sein, glaube ich zu wissen, dass time() nur die Sekunden seit der "Unixepoche" angibt, strftime aber einen Unix Timestamp verlangt. Ich empfehle dir also einfach einmal das Kapitel Date/Time im PHP-Manual durchzulesen und noch einmal nachzufragen, wenn etwas unklar bleibt.

      Die besagt, dass time() http://de2.php.net/manual/de/function.time.php einen Timestamp zurückliefert. Allerdings sollte Florian die Anmerkung in http://de2.php.net/manual/de/function.strftime.php bezüglich negativer Werte bei Timestamps beachten, schließlich haben wir inzwischen mehr als die Hälfte des Timestamp-Zeitraums hinter uns :-) Ich vermute das Problem an dieser Stelle.

      Eine weitere Idee wäre es, das Datum überhaupt als Unix Timestamp zu speichern und MySQL mit dem Datum umgehen zu lassen. Informationen dazu gibt es sicher in der MySQL Dokumentation.

      Wegen des begrenzten Zeitraums des Datentyps TIMESTAMP, ich zitiere

      <zitat quelle=http://dev.mysql.com/doc/mysql/de/DATETIME.html>
      TIMESTAMP-Werte haben einen Wertebereich von 1970 bis irgendwann im Jahr 2037, bei einer Auflösung von einer Sekunde. Werte werden als Zahlen angezeigt.
      </zitat>

      halte ich es für besser, Datumsangaben als DATE bzw. DATETIME abzuspeichern und _nicht_ TIMESTAMP zu verwenden.

      Freundliche Grüsse,

      Vinzenz

      1. Hallo,

        Die besagt, dass time() http://de2.php.net/manual/de/function.time.php einen Timestamp zurückliefert.

        Ich sollte das Manual doch wieder öfters lesen ;-) Trotzdem eine Frage:
        Ein Unix-Timestamp sind einfach die Sekunden seit dem 1.1.1970; 0:00:00 Uhr GMT; Hat jetzt der "Timestamp" in der Form 200407180922 auch einen eigenen Namen?

        gruß,
        Severin

        --
        Realität ist das, was nicht verschwindet, wenn man aufhört, daran zu glauben.
        --Philip K. Dick
        1. Hello,

          Ich sollte das Manual doch wieder öfters lesen ;-) Trotzdem eine Frage:
          Ein Unix-Timestamp sind einfach die Sekunden seit dem 1.1.1970; 0:00:00 Uhr GMT; Hat jetzt der "Timestamp" in der Form 200407180922 auch einen eigenen Namen?

          Ich würde das als "Ansi-Datum" bezeichnen.

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau