xpfreund: Regulärer Ausdruck für Datumsanpassung

Hallo,

also in einer DB, bei der ich das Datumsformat nicht ändern kann, steht ein Datum "20100712".
Jetzt hab ich bisher immer per Substr die einzelnen Teile, also Jahr,... rausgezogen und dann als neuen String im Format "12.07.2010" zusammengesetzt.
Da ich jetzt in meinem Skript schon einige Male mit Reguären Ausdrücken konfrontiert war, würde ich gerne wissen, ob und wie man das schreiben kann, das der Formatwechsel mit Regulären Ausdrücken funktioniert.

gruß aus Senftenberg am See

  1. Hi,

    also in einer DB, bei der ich das Datumsformat nicht ändern kann, steht ein Datum "20100712".
    Jetzt hab ich bisher immer per Substr die einzelnen Teile, also Jahr,... rausgezogen und dann als neuen String im Format "12.07.2010" zusammengesetzt.

    Gut. Dann bleib dabei.

    Da ich jetzt in meinem Skript schon einige Male mit Reguären Ausdrücken konfrontiert war, würde ich gerne wissen, ob und wie man das schreiben kann, das der Formatwechsel mit Regulären Ausdrücken funktioniert.

    Wozu?

    Reguläre Ausdrücke sind zur Mustersuche gedacht, insb. auch von Mustern mit variabler Länge.
    Dein Datumsformat ist aber absolut statisch, du weißt von jedem Bestandteil genau, wo er steht und wie lang er ist.

    Zitat #1418

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    1. Hallo,

      Gut. Dann bleib dabei.

      Schade, hätte ja sein können, dass man sich n paar Zeilen sparen kann, hat ja bei meiner alltrim-Funktion auch geklappt, die aber eben auch keine statischen Daten bekommt.
      Trotzdem danke für die schnelle Antwort.

      gruß aus Senftenberg am See

      1. Moin!

        Schade, hätte ja sein können, dass man sich n paar Zeilen sparen kann

        <?php  
        $datum='20100714';  
        echo substr($datum,6,2).'.'.substr($datum,4,2).'.'.substr($datum,0,4)."\n";  
        ?>
        

        Wie willst Du hier noch "n paar Zeilen sparen"?

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix

        1. Hallo,

          <?php

          $datum='20100714';
          echo substr($datum,6,2).'.'.substr($datum,4,2).'.'.substr($datum,0,4)."\n";
          ?>

          
          >   
          > Wie willst Du hier noch "n paar Zeilen sparen"?  
          
          Klar, Brett vorm Kopf.  
          Hatte immerso:  
          ~~~perl
            
          my($day)=substr($4,6,2);  
          my($month)=substr($4,4,2);  
          my($year)=substr($4,0,4);  
          my($date)=$day.'.'.$month.'.'.$year;  
          
          

          und wenn substr schneller ist, dann bleib ich natürlich dabei.

          Aber trotzdem mal gut zu wissen, wie man das regulär aufbaut, falls die Sachen doch mal komplizierter werden.

          gruß aus Senftenberg am See

  2. also in einer DB, bei der ich das Datumsformat nicht ändern kann, steht ein Datum "20100712".
    Jetzt hab ich bisher immer per Substr die einzelnen Teile, also Jahr,... rausgezogen und dann als neuen String im Format "12.07.2010" zusammengesetzt.
    Da ich jetzt in meinem Skript schon einige Male mit Reguären Ausdrücken konfrontiert war, würde ich gerne wissen, ob und wie man das schreiben kann, das der Formatwechsel mit Regulären Ausdrücken funktioniert.

    substr() ist immer schneller als eine Reguläre Expression.
    Nur wenn du Userinput untainten musst, bisst du auch bei Daten statischer Länge auf eine reguläre Expression angewiesen.

    Ich sehe nicht, welche Zeilen du mit m// gegenüber substr() sparen willst.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. hi,

      substr() ist immer schneller als eine Reguläre Expression.

      Noch schneller ist unpack(), weil das auf byte-Ebene tutet:

      my ($y,$d,$m) = unpack('A4A2A2','20100712');

      Horst Packer

      1. pack/unpack arbeiten auf Zeichen-, nicht (ausschließlich) Byteebene, Beweis im Codeblock unten. Der wahre Grund für die Geschwindigkeit liegt darin, dass sie verglichen mit den üblichen Perlfunktionen so primitiv und merkmalsarm sind.

          
        
        > perl -CAO -E'say for unpack q(A1A2A3), $ARGV[0]' 一二三四五六七八九十  
        
        一  
        二三  
        四五六  
        
        
  3. hi,

    Da ich jetzt in meinem Skript schon einige Male mit Reguären Ausdrücken konfrontiert war, würde ich gerne wissen, ob und wie man das schreiben kann, das der Formatwechsel mit Regulären Ausdrücken funktioniert.

    Jow, wenns denn sein mus ;-)

      
    my $d = 20100712;  
    $d =~ /^(\d{4})(\d{2})(\d{2})$/;  
    print "$3.$2.$1\n";  
    
    

    Horst Klugscheiser