Announcement

Collapse
No announcement yet.

Datum formatieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datum formatieren

    Ich versuche aus Timestamp-Datum ein Deutsches Datum zu machen. Leider erhalte ich da immer 01.01.1970 01:01. Was mache ich falsch?

    <html>
    <head>
    </head>
    <body>
    <?php
    include "../logs/jkg.php";
    $res = mysql_query("select * from progr");
    $num = mysql_num_rows($res);

    echo "Die Datenbank enhält $num Datensätze<br />";

    echo "Datum Zeit - Anlass / Ort / Beschreibung<br /><br />";

    while ($dsatz = mysql_fetch_assoc($res))
    {
    $anl[$i] = $dsatz["timest"] . " - "
    . $dsatz["anlass"] . "<br />"
    . " &nbsp; " . $dsatz["ort"] . "<br />"
    . " &nbsp; " . $dsatz["beschr"];

    echo $anl[$i] . "<br />";

    /* Aus dem folgenden Befehl sieht man was ich möchte:
    Datum im D-gebräuchlichen Format.
    Leider kommt da immer "01.01.1970 01:01" raus. :-( */

    echo date("d.m.Y H:m",$dsatz["timest"]);
    echo "<br /><br />";
    }
    ?>
    </body>
    </html>


    Mein Script erzeugt folgende Ausgabe:

    Die Datenbank enhält 2 Datensätze
    Datum Zeit - Anlass / Ort / Beschreibung

    2011-01-18 19:00:00 - 73. Hauptversammlung
    Rest. Glacier
    Apèro und Nachtessen, anschl. gesch. Teil.
    01.01.1970 01:01

    2011-08-01 20:00:00 - 1.-August-Feier
    Baer-Platz
    Mitwirkung beim Festakt
    01.01.1970 01:01

  • #2
    Die Frage hat doch mit MySQL nix zu tun.

    echo date("d.m.Y H:m",$dsatz["timest"]);

    Der Parameter timestamp ist ein Integerwert (UNIX-Zeitstempel). Bei dir ist es offenbar ein String in der Form "2011-01-18 19:00:00". Dieser kann so nicht formatiert werden
    Christian

    Comment


    • #3
      Ja, aber das Format wird ja formatiert, wie man das in der ausgabe Sieht, nur wird das Datum nicht richtig übernommen. In der MySQL-Datenbank steht der weiter oben angezeigte Timestamp.

      Comment


      • #4
        Nein, wird es nicht. Da der String nicht als UNIX-Timestamp aufgelöst werden kann (bzw. nur bis zur ersten 01) wird mit einem Integerwert von 01 gerechnet. Das ist bekanntermaßen der "01.01.1970 01:01". Deshalb bekommst du das zu sehen.

        http://de.wikipedia.org/wiki/Unix-Timestamp

        Ich weiss jetzt nicht was "weiter oben" ist, aber ich sehe da nur einen String wie "2011-01-18 19:00:00" und das ist kein UNIX-Timestamp im Integerformat

        http://www.php.net/manual/de/functio...rom-format.php
        Christian

        Comment


        • #5
          OK, gibt es eine andere Möglichkeit in der MySQL-Datenbank ein Datum zu haben und das dann im deutschen Format anzuzeigen?

          Comment


          • #6
            a) Umformatieren

            http://www.php.net/manual/de/functio...rom-format.php

            b) mittels Stringverarbeitung die einzelnen Elemente aus dem Datenbankeintrag umstellen
            Christian

            Comment


            • #7
              Danke erst mal. Habe da etwas gefunden.

              $dat = preg_replace("/([0-9]{4})-([0-9]{2})-([0-9]{2})/","$3.$2.$1",$dsatz["datum"]);

              werde damit experimentieren.

              Comment


              • #8
                Originally posted by Urs Schild View Post
                Danke erst mal. Habe da etwas gefunden.

                $dat = preg_replace("/([0-9]{4})-([0-9]{2})-([0-9]{2})/","$3.$2.$1",$dsatz["datum"]);

                werde damit experimentieren.
                Ach du Sch...
                Code:
                $dat = date("d.m.Y", strtotime($dsatz["datum"]));
                http://de.php.net/manual/en/function.strtotime.php
                http://de.php.net/manual/en/function.date.php
                Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

                Comment


                • #9
                  Originally posted by dibo33 View Post
                  Ach du Sch...
                  Oder wenn man aktuelles PHP verwenden will...
                  PHP Code:
                  $theDate = new DateTime($dsatz['datum']);
                  echo 
                  $theDate->format('d.m.Y H:m'); 
                  Gruß Falk
                  Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                  Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                  Comment

                  Working...
                  X