Andü: Zeitformatierung

Ich hab einige Datumsangabe in dem bei uns typischen Format (z.B.: 25.05.2005) und möchte diese sortieren lassen. Dummerweise nimmt PHP dieses Datum als eine Zahl an und sortiert diese sozusagen nach dem Tag.
Ich möchte das aber gern chronologisch haben. Wie kann ich die Zeiten "umformen" lassen, ohne meine Datensätze zu ändern?

  1. Hi,

    Ich möchte das aber gern chronologisch haben. Wie kann ich die Zeiten "umformen" lassen, ohne meine Datensätze zu ändern?

    tja dann must du das ausi umgehn. mit den 2 folgenden funktionen

    um aus 12.12.2005 => 2005-12-12 zu machen

      
    function datum_deutsch2mysql($datum)  
    {  
      $string = $datum;  
      $token = strtok($string, ".");  
      $tag_ok = false;  
      $monat_ok = false;  
      $jahr_ok = false;  
      
      while ($token !== false)  
      {  
        $feld[] = $token;  
        $token = strtok(".");  
      }  
      
      if(is_numeric($feld[0]) == true)  
      {  
        $tag = $feld[0];  
        $tag_ok = true;  
      }  
      
      if(is_numeric($feld[1]) == true)  
      {  
        $monat = $feld[1];  
        $monat_ok = true;  
      }  
      if(is_numeric($feld[2]) == true)  
      {  
        $jahr = $feld[2];  
        $jahr_ok = true;  
      }  
      
      if(($tag_ok == true) AND ($monat_ok == true) AND ($jahr_ok == true))  
      {  
        $erg = checkdate($monat, $tag, $jahr);  
      }  
      else  
      {  
        $erg = false;  
      }  
      
      if($erg == false)  
      {  
        return false;  
      }  
      else  
      {  
        $datum_mysql = sprintf("%s-%s-%s",$jahr, $monat, $tag);  
        return $datum_mysql;  
      }  
    } //function datum_deutsch2mysql($datum)  
    
    

    dann sortieren und dann wieder zurück wandeln mit

      
    function datum_deutsch($datum)  
    {  
      $num_wt = strftime("%w",strtotime($datum));  
      
      return $datum_dt = strftime("%d.%m.%Y",strtotime($datum));  
    }  
    
    

    MfG

    1. Ganz schön umständlich? Geht das net einfacher/schneller?

  2. Huhu Andü

    Wie kann ich die Zeiten "umformen" lassen, ohne meine Datensätze zu ändern?

    Was spricht denn dagegen die Datensätze/ den Spaltentyp zu ändern?

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
  3. Hello,

    Ich hab einige Datumsangabe in dem bei uns typischen Format (z.B.: 25.05.2005) und möchte diese sortieren lassen. Dummerweise nimmt PHP dieses Datum als eine Zahl an und sortiert diese sozusagen nach dem Tag.
    Ich möchte das aber gern chronologisch haben. Wie kann ich die Zeiten "umformen" lassen, ohne meine Datensätze zu ändern?

    Da Du nichts von einer Datenbank schreibst, solltest Du das Format der Datenhaltung angeben.

    Stehen die Daten in einer Textdatei, oder stehen sie in einem Array?

    Ggf. solltest Du die Datenhaltung auf sortierfähiges Format umstellen und dann per Anzeigefunktion die Umformatierung durchführen.

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

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Die Daten stehen in einem Array.

      Ggf. solltest Du die Datenhaltung auf sortierfähiges Format umstellen und dann per Anzeigefunktion die Umformatierung durchführen.

      Anzeigefunktion?

      1. Hello,

        Die Daten stehen in einem Array.

        Ggf. solltest Du die Datenhaltung auf sortierfähiges Format umstellen und dann per Anzeigefunktion die Umformatierung durchführen.

        Anzeigefunktion?

        function make_german_date($ansidate)
          {
            $date = substr(6,2,$ansidate).'.'.substr(4,2,$ansidate).'.'.substr(0,4,$ansidate);
            return $date;
          }

        echo macke_german_date($_daten[n]);

        Und vorher im Array die daten auf Ansi umstellen:

        function convert2ansi($german_date_string)
          {
            $_date = explode('.',$german_date_string);
            $ansi = $_date[2].$_date[1].$_date[0];
            return $ansi;
          }

        für das ganze Array $_daten, dass erstmal in German-Date-Format vorliegt:

        $_ansidate = arraymap('convert2ansi',$_daten);

        Dieses Array kannst Du nun sortieren, da es numerische Strings enthält.

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

        Tom

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