Rolf Sonderegger: Probleme mit Datumserfassung, -formatierung

halloo forum!

ich möchte von einem timestamp im format "yyyymmddhhmmss" (standard glaub ich) das datum und den monat auslesen.

$datumzeit = "20000502120606"; // 02.05.2000 12:06:06

ich probierte es zuerst mit der function date()

echo(date("l j.n.Y", $datumzeit))

diese eingabe ergibt "Tuesday 19.1.2038" ?!

echo(date("H:i", $datumzeit))

diese eingabe ergibt "04:14" ?!

ok umdenken...
ich benutzte die getdate() funktion.

$diesetime = getdate($datumzeit);

echo($diesetime["hours"])

diese eingabe ergibt "4"

[schnipp - fertig ausprobieren]

ich hab mir dann überlegt, ob die obige zahl ($datumzeit) als anzahl sekunden seit 1970 berechnet wird... dann würde aber 2038 als jahr auch nicht stimmen...

irgendwie weiss ich nicht weiter :(

noch ein paar zusätzliche angaben:
getestet unter win2000 und suse linux 6.1 (gleiches resultat)

die variable $datumzeit wird nachher aus einer mysql db ausgelesen... dort wird sie in diesem format gespeichert.

hat jemand eine lösung?

was mich am meisten interessiert ist, in welchem format das datum sein muss, wenn ich es mit date("formatierung", $datum) einlesen will...

vielen dank!

mfg

Siramon

  1. Hallo,

    ich möchte von einem timestamp im format "yyyymmddhhmmss" (standard glaub ich) das datum und den monat auslesen.

    Das ist dein erster fehler, wenn du zb. echo date("U"); hast dann hast du einen Timestamp, ein timestamp ist GENERELL "Seconds since the epoch" (irgendwann in den frühen 70ern :-)

    nachdem du das jetzt weißt sollte es dir doch leicht möglich sein aus dem timestamp ein datum zu errechnen.

    das schöne an php ist das wirklich an viele eventualitäten gedacht wurde :-)

    <?php
    $timestamp=date("U");
    echo "Heutiges Datum: ".date("d.m.Y H:s") ." Uhr<br>";
    echo "Timestamp: ".time()." Das sind sekunden<br>";
    echo "Heutiges Datum aus Timestamp: ".date("d.m.Y H:s",$timestamp);
    ?>

    also wäre deine erste annahme richtig:

    $datumzeit = "20000502120606"; // 02.05.2000 12:06:06
    ich probierte es zuerst mit der function date()
    echo(date("l j.n.Y", $datumzeit))

    bis auf das das du den fehler begangen hast zu glauben das es ein codierter datumsstring ist :-)

    lg
    Ludwig

    1. hallo forum, hallo ludwig

      vielen dank! ich habe meinen fehler jetzt erkannt ;)

      was ich jetzt noch machen muss, ist den timestamp aus der mysql datenbank in den timestamp von php umzuwandeln...

      ansatz:

      mit substr den timestamp einzeln auslesen und in variablen für (jahr, monat, tag, stunde, minute, sekunde) einlesen. dann mit mktime einen php timestamp erzeugen.

      frage:

      gibt es dafür schon eine funktion in php?
      ich habe mal unter "date time functions" und "mysql functions" im php manual nachgeschaut - aber leider nix gefunden.

      any ideas?

      tx im voraus

      Siramon

      1. Hallo,

        warum machst dus nicht gleich so das du den timestamp per php einträgst.

        der mysql timestamp is fünr hugo in dem fall..

        lg
        Ludwig

        1. tach Ludwig

          Hallo,

          warum machst dus nicht gleich so das du den timestamp per php einträgst.

          werd ich wohl machen ;)

          ich habe eben schon 20 zeilen in der tabelle - die muss ich jetzt umformatieren... darum mein gedanke ;)

          vielen dank für deine tips

          gruss aus der schweiz

          Siramon

      2. Hi Rolf

        gibt es dafür schon eine funktion in php?
        ich habe mal unter "date time functions" und "mysql functions" im php manual nachgeschaut - aber leider nix gefunden.

        any ideas?

        Nee, da gibbet keine Funktionen. das musste mit substr machen. ist ja auch nicht so schwer.

        Ich speichere aber einen string wenn ich ihn spaeter wieder "zersetzen"" moechte gleich anders ab, z.B. folgendermassen :

        <? $string = "name::email::Gaestebucheintrag"; ?>

        dann kannste das ganze per

        <? $arr_data = explode("::", $string); ?>

        in einem array auslesen der dann wiederum folgendermassen easy und ohne substr(); geordnet werden kann:

        <? $name = $arr_data[0];
           $email = $arr_data[1];
           $gbeintr = $arr_data[2];
        ?>

        so. ich weis eigentlich gar nicht ob du das wissen wolltest, aber vielleicht ist ja ein php - profi anwesend der mir sagen kann ob sowas "guter" programmierstil ist ?

        Ich wuerde mich ueber Rueckmeldungen freuen ...

        mfg
        --felix gonschorek