Datum in Timestamp wandeln

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datum in Timestamp wandeln

    Mit welchem Befehl kann ich ein Datum der Form:
    Code:
    17.11.2005 19.23.15
    dd.mm.yyyy hh.mm.ss
    in einen Timestamp umwandeln? Bzw ist das überhaupt möglich?
    Problem ist, ich habe eine txtdatei von meinem alten Gästebuch mit den einträgen untereinander in der form:
    Code:
    name
    datum (siehe oben)
    text
    un diese will ich in meine neue mySQL Tabelle übernehmen, dabei will ich natürlich nicht jeden Eintrag einzeln über phpmyadmin hinzufügen ...
    name und text sind bisher kein problem ... frage ist nur wie ich aus dem datum einen unix timestamp mach, da ich die neue tabelle so aufgebaut habe!
    Mess with the Besth, die like the rest!

  • #2
    Re: Datum in Timestamp wandeln

    Original geschrieben von Besth
    Mit welchem Befehl kann ich ein Datum der Form:
    Code:
    17.11.2005 19.23.15
    dd.mm.yyyy hh.mm.ss
    in einen Timestamp umwandeln?
    Nimm diesen String auseinander, und setze ihn (ggf.) in der passenden Reihenfolge wieder zusammen - ob du das PHP- oder MySQL-seitig machst, sei dir überlassen. Schau dich halt bei den Stringfunktionen des jeweiligen Systems nach was passendem um.

    Wenn du dann mit PHP einen Timestamp erzeugen willst, nimmst du mktime (oder strtotime), und wenn du es mit MySQL machen willst, erzeugst du zuerst ein für MySQL verständliches Datumsformat, und wendest dann UNIX_TIMESTAMP() darauf an.


    Ach ja, btw:
    frage ist nur wie ich aus dem datum einen unix timestamp mach, da ich die neue tabelle so aufgebaut habe!
    Warum willst du in MySQL überhaupt einen Unix Timestamp benutzen?

    Mit den Datumstypen von MySQL fährst du in vielerlei Hinsicht idR. deutlich besser und komfortabler.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      PHP-Code:
      $datum '17.12.2006 19.23.23';
      $datum_arr explode(' ',$datum);
      $zeit $datum_arr[1];
      $datum_arr explode('.',$datum_arr[0]);
      $timestamp strtotime($datum_arr[1].'.'.$datum_arr[0].'.'.$datum_arr[2]); 
      so in etwa ?

      Gruss

      tobi
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        so also wenn ihr mal ein script braucht das daten aus ner text-datei in ne db schreibt wo die datei so aufgebaut ist:
        Code:
        Name
        Datum (Form: 17.12.2006 19.23.23)
        Text
        dann nehmt das hier:
        PHP-Code:
        <?php
          $daten 
        file("daten.txt");
          
        $i 0;
          foreach(
        $daten as $stuff) {
            
        $datearr explode(' ',$daten[$i+1]);
            
        $datum $datearr[0];
            
        $datumarr explode('.',$datum);
            
        $newdatum $datumarr[2].'-'.$datumarr[1].'-'.$datumarr[0];
            
        $zeit $datearr[1];
            
        $zeitarr explode('.',$zeit);
            
        $newzeit $zeitarr[0].':'.$zeitarr[1].':'.$zeitarr[2];
            
        $timestamp strtotime($newdatum." ".$newzeit);

            
        $sql "INSERT INTO box (name, datum, text) VALUES ('".$daten[$i]."', '".$timestamp."', '".$daten[$i+2]."')";
            
        mysql_query($sql) OR die("Query: <pre>".$sql."</pre>\n"."Antwort: ".mysql_error());
            echo 
        $i." -> OK - Daten hinzugefügt!<br>";
            
        $i $i 3;
          }
        ?>
        gibt zwar nen offset error ^^
        wahrscheinlich wegen dem $i + 3
        der macht die schleife praktisch 3 ma länger, aber es sind trotzdem alle datensätze da ...
        wenn's jemanden stört dann musser die foreach halt mit ner while-schleife ersetzen oder so ...
        Mess with the Besth, die like the rest!

        Kommentar


        • #5
          Achso und zur Problemlösung:
          Datum in Timestamp

          Wichtig ist das ihr bei strtotime auf diese Form kommt:
          Code:
          yyyy-mm-dd hh:mm:ss
          Dann lässt sich ein Datum problemlos umwandeln!

          PHP-Code:
          echo strtotime("2006-5-24 12:34:56");
          // gibt 1148466896 aus 
          Mess with the Besth, die like the rest!

          Kommentar


          • #6
            Vielleicht in Deinem Fall nicht wichtig, aber andere brauchen es vielleicht:

            strtotime funktioniert erst ab 1902-01-01

            Gruss Guido

            Kommentar


            • #7
              Re: Datum in Timestamp wandeln

              Original geschrieben von Besth
              Mit welchem Befehl kann ich ein Datum der Form: 17.11.2005 19.23.15
              dd.mm.yyyy hh.mm.ss in einen Timestamp umwandeln?
              Ich würde das Datum mit preg_split aufteilen, mit list()= in skalare auseinandernehmen,
              mit mktime() in ein php-time verwandeln (unix-timestamp), oder mit
              sprintf in einen sql-datetime String.

              Gibt drei Zeilen und macht die Unregelmässigkeiten der Aufgabe "regelmässig".
              imho am "regelmässigsten". Ferner würde ich es in eine Funktion packen, damit die
              Zwischenvariabeln lokal sind (+3Zeilen) und nirgendwo stören.

              wie wahsaga oben bemerkt hat, ist ein sql-datetime vorzuziehen.

              Kommentar


              • #8
                ich hab grad 0 verstanden von dem was du da geschrieben hast
                ich denk meine variante ist einfacher ^^
                viellei auch bissel fehlerbehafteter aber wenigstens versteh ich sie!


                und wegen dem datum in der db ...
                was soll an nem timestamp falsch bzw unbrauchbar sein?
                ich mein ich hab dann so ne zahl da drin: 1721832186 und kann die ganz einfach mit: date so zusammenbaun wie ich möchte
                Mess with the Besth, die like the rest!

                Kommentar


                • #9
                  Original geschrieben von Besth
                  was soll an nem timestamp falsch bzw unbrauchbar sein?
                  ich mein ich hab dann so ne zahl da drin: 1721832186
                  Und, sagt die dir auf Anhieb was?
                  MySQL Datumstypen sind menschenlesbar, mit denen könntest du gleich was anfangen, selbst wenn du dir nur einen Dump der Daten ansiehst, oder sie im PMA updatest o.ä.
                  und kann die ganz einfach mit: date so zusammenbaun wie ich möchte
                  Das kannst du mit den Datums- und Zeit-Funktionen von MySQL auch.

                  Und wenn du dann irgendwann mal Datumsoperationen durchführen willst - z.B. nur alle Einträge vom Jahr 2006 auslesen, oder nur die in einem bestimmten Monat gemachten o.ä., oder vielleicht sogar mit Datümern rechnen willst, Zeitdifferenzen ermitteln etc. - dann brauchst du einen MySQL-Datumstyp nicht erst noch in etwas für MySQL auch verständliches umwandeln - einen Unix Timestamp hingegen schon.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    öhm?
                    ich find mit so einer zahl kann man ganz gut rechnen oder meinste nich?
                    Bsp: 30 Sekunden abziehn:
                    178791782 - 30
                    3 Stunden hinzu:
                    178791782 + 60*60*3
                    find ich eig sehr einfach!

                    gut mit dem andern hast du recht, wenn man mal durch die db schaut isses bissel schwierig das datum herauszufinden, aber für sowas kann man sich ja auch schnell kleine scripte schreiben, da das wohl eher die seltenheit ist, also bei mir zumindest!
                    Mess with the Besth, die like the rest!

                    Kommentar


                    • #11
                      Original geschrieben von Besth
                      öhm?
                      ich find mit so einer zahl kann man ganz gut rechnen oder meinste nich?
                      Bsp: 30 Sekunden abziehn:
                      178791782 - 30
                      3 Stunden hinzu:
                      178791782 + 60*60*3
                      find ich eig sehr einfach!
                      Und wenn du dann mal einen ganzen Tag oder mehrere draufaddieren oder subtrahieren willst - dann arbeitest du natürlich mit 60*60*24 = 86400 Sekunden, stimmt's?

                      Und dann wird hier nach einiger Zeit ein neuer Thread von dir erstellt, in dem du fragst, warum das komischerweise bei bestimmten Datümern, irgendwann im Frühling oder im Herbst, "nicht funzt", wieso die Uhrzeit nicht mehr stimmt.

                      Und dann dürfen wir zum x-ten Mal erklären, dass es sowas wie eine Zeitumstellung gibt, wo mal 'ne Stunde geklaut oder dazugegeben wird, was du höchstvermutlich überhaupt nicht bedacht hast bei dieser naiven Rumrechnerei mit "ein Tag hat 86400 Sekunden" ...

                      Wenn du diese "Rechnerei" einfach den Datumsfunktionen der DB, angewandt auf einen der Datumstypen der DB, überlassen hättest - die hätten für dich daran gedacht!
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        ah danke, na das is doch mal ein argument
                        sowas wollte ich doch nur hören!
                        jetzt bin ich aufgeklärt
                        warum nich gleich so? ^^
                        Mess with the Besth, die like the rest!

                        Kommentar

                        Lädt...
                        X