Paul: Datum parsen

Hallo,

ich war gestern schon einmal hier im Forum, danke noch einmal an den Leuten die mir so super geholfen haben.

Ich habe jedoch noch eine Frage und zwar habe ich ein Datum welches ich über eine Variable aus einem Textfeld bekomme welches so aussieht:

15.01.2004

um es nun auf den Timestamp zusetzen benutze ich mktime() nur da sieht die Formatierung ganz anders aus.

mktime(0,0,0,01,15,2004);

Gibt es eine einfache Lösung um mit date() das Datum andrs zu formatieren ich habe da schon einiges ausprobiert aber es kam immer was falsches raus. Mir fällt nun auch nichts mehr dazu ein wie man es ganz einfachlösen könnte. Ein andere Lösung wäre den string umzuparsen und dann in mktime die entsprechenden Variablen einzusetzen. Das würde auch gehen aber vielleicht gibt es doch noch eine einfachere Lösung? Vielleicht kann mir einen Tipp geben wie es sich einfach lösen läßt?

Gruß Paul

  1. hi,

    15.01.2004
    um es nun auf den Timestamp zusetzen benutze ich mktime() nur da sieht die Formatierung ganz anders aus.
    mktime(0,0,0,01,15,2004);

    mktime() _ist_ keine formatierung, mktime() erzeugt einen unix-timestamp.

    Gibt es eine einfache Lösung um mit date() das Datum andrs zu formatieren ich habe da schon einiges ausprobiert aber es kam immer was falsches raus.

    date() kannst du benutzen, um aus einem unix-timestamp wieder ein für menschen lesbares datum zu machen. dens formatierungsmöglichkeiten sind dabei kaum grenzen gesetzt, genaueres verrät dir das manual zu date().

    gruss,
    wahsaga

    1. mktime() _ist_ keine formatierung, mktime() erzeugt einen unix-timestamp.

      Gibt es eine einfache Lösung um mit date() das Datum andrs zu formatieren ich habe da schon einiges ausprobiert aber es kam immer was falsches raus.

      ja ich muß von einem bestimmten Datum also hier im Beispiel vom 15.01.2004 ein Unix Timestamp erzeugen! Es könnte dort auch der 17.01.2004 etc stehen.

      ich bekomme aus meiner Variable meines Formulares folgende Foramtierung 15.01.2004 die ich irgendwie zum Unixtimestamp umwandeln muß nur bei mktime() sieht die formatierung anders aus.

      Wenn ich per Hand das Datum vom 15.01.2004 eintrage muß es so aussehen mktime(0,0,0,01,15,2004);   Nur aus meinem Formular bekomme ich eine andere Formatierung, muß ich die umparsen und geht das auch einfacher?

      Gruß Paul

      1. das hört sich nach deinem fall an!

        http://www.dynamic-webpages.de/php/function.strtotime.php

        1. Hallo,

          das hört sich nach deinem fall an!
          http://www.dynamic-webpages.de/php/function.strtotime.php

          Bitte lies </faq/#Q-19> und wende es an. Danke.
          => http://www.dynamic-webpages.de/php/function.strtotime.php

          strtotime() hilft ihm hier aber nicht weiter,
          weil es bei einem Datum xx.yy.zzzz davon ausgeht,
          dass xx der Monat ist und yy der Tag ("amerikanisch").

          Wie gesagt kann er ein "deutsches" Datum in der Form
          "15.01.2004" _nicht_ direkt in einen Timestamp umwandeln,
          sondern er muss den String "auseinandernehmen".
          Eine Moeglichkeit ist explode(), es gibt auch weitere.
          Beispiele finden sich in den Benutzerkommentaren
          in den Manual-Seiten zu den einzelnen Datums- und
          Zeit-Funktionen.
          http://www.php.net/manual/de/ref.datetime.php

          Gruesse,

          Thomas

          --
          Dank /my/ automatisch ausgeblendet: JavaScript, ASP.
          Manuell "ausgeblendet": Threads mit Frames, Iframes und Scrollbalken im Subject...
          Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
          1. Hallo,

            das hört sich nach deinem fall an!
            http://www.dynamic-webpages.de/php/function.strtotime.php

            Bitte lies </faq/#Q-19> und wende es an. Danke.
            => http://www.dynamic-webpages.de/php/function.strtotime.php

            strtotime() hilft ihm hier aber nicht weiter,
            weil es bei einem Datum xx.yy.zzzz davon ausgeht,
            dass xx der Monat ist und yy der Tag ("amerikanisch").

            Wie gesagt kann er ein "deutsches" Datum in der Form
            "15.01.2004" _nicht_ direkt in einen Timestamp umwandeln,
            sondern er muss den String "auseinandernehmen".
            Eine Moeglichkeit ist explode(), es gibt auch weitere.
            Beispiele finden sich in den Benutzerkommentaren
            in den Manual-Seiten zu den einzelnen Datums- und
            Zeit-Funktionen.
            http://www.php.net/manual/de/ref.datetime.php

            Gruesse,

            Ok ich habe es verstanden eine einfache Möglichkeit gibt es nicht also muß man immer parsen.

            Bei diversen Versuchen auch mit strtotime kam was falsches raus.

            echo "<br>strtotime: ". strtotime("15.01.2004");
            Ausgabe: -1

            Damit hat sich meine Frage auch schon beantwortet!

            Gruß Paul

            1. hi,

              Damit hat sich meine Frage auch schon beantwortet!

              dann brauchst du ja jetzt nur noch zitieren lernen :-)

              dein fullquote war nämlich mehr als überflüssig.

              </faq/#Q-09a>
              http://learn.to/quote

              gruss,
              wahsaga

  2. Hallo,

    ich war gestern schon einmal hier im Forum, danke noch einmal an den Leuten die mir so super geholfen haben.

    Du haettest ruhig im alten Thread bleiben koennen.
    [pref:t=68306&m=391653]
    Schliesslich geht es immer noch den gleichen Themenkreis,
    und diese Folgefrage grenzt an ein Doppelposting. </faq/#Q-06c>

    Ich habe jedoch noch eine Frage und zwar habe ich ein Datum welches ich über eine Variable aus einem Textfeld bekomme welches so aussieht:
    15.01.2004
    um es nun auf den Timestamp zusetzen benutze ich mktime() nur da sieht die Formatierung ganz anders aus.
    mktime(0,0,0,01,15,2004);

    Das ist das Geschenk der Amerikaner ;-)
    Weder mktime() noch strtotime() fressen unser
    europaeisches Datum bwz. die Reihenfolge
    Tag - Monat - Jahr in Zahlen.

    Du koenntest

    • den String mit explode() und "." als Trennzeichen
        in Drei Teile aufspalten und dann weiterverwenden
    • gleich im Formular drei Felder fuers Datum machen.

    Pruefen, ob die Werte OK sind, solltest Du ja sowieso...

    Gruesse,

    Thomas

    --
    Dank /my/ automatisch ausgeblendet: JavaScript, ASP.
    Manuell "ausgeblendet": Threads mit Frames, Iframes und Scrollbalken im Subject...
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
  3. mir ist nicht klar was du eigentlich erreichen willst?

    du kannst mit date(); das datum doch in tausend beliebigen formaten ausgeben...
    http://www.dynamic-webpages.de/php/function.date.php

    1. mir ist nicht klar was du eigentlich erreichen willst?

      du kannst mit date(); das datum doch in tausend beliebigen formaten ausgeben...
      http://www.dynamic-webpages.de/php/function.date.php

      Mit Date geht das nicht dann bekomme ich das Datum von 1970
      Ich brauche den Timestamp um damit rechnen zu können.

      wenn ich die passenden variablen für mktime(0,0,0,01,15,2004)
      aus dem 15.01.2004 erzeugen will und es mit date mache funktioniert es nicht

      $eingabe = date("H.m.s.i.d.Y", $var_datum_von);

      Ausgabe:
      eingabe: 00.01.10.00.01.1970

      Wenn nun dort das richtige rauskommen würde dann würde ich einfach
      $zeit_zukunft = mktime($eingabe); erzeugen