stefan: Datum formatieren

hallo,
ich möchte einen Datumswert formatieren.
Der Wert wird über einen Link mit der Variable $dat übergeben:
<A class="red" target="_self" href="kalender2.php?dat=<?echo $wochentag[$i]?>"> <?php echo $wochentag1[$i];?></A>
im Format YYYY-MM-DD.
Auf einer anderen Seite werte ich die Var. folgendermaßen aus:
<?php if(isset($dat)){
   echo $dat;
}else {echo strftime("%A, %d.%m.%Y "); }?>
Ich habe schon explode ausprobiert, aber ich bekomme es nicht hin den Datumswert in $dat in folgendes Format zu ändern:
z.B: "Freitag, 12.04.2002"
Wie geht das?
Über Hilfe freu ich mich sehr und grüße euch
stefan

  1. Hallo Stefan,

    reguläre Ausdrücke sind Dein Freund ;-)

    im Format YYYY-MM-DD.
    Ich habe schon explode ausprobiert, aber ich bekomme es nicht hin den Datumswert in $dat in folgendes Format zu ändern:
    z.B: "Freitag, 12.04.2002"

    $dat = '2002-04-12';
    $dat_neu = preg_replace('/(dddd)-(dd)-(dd)/','\3.\2.\1');

    Das sollte eigentlich das gewünschte Ergebnis liefern. Auf der linken Seite wird nach Ziffern (d) gesucht, wobei die Klammern die Treffer "isolieren". Auf der rechten Seite wird mit \1,\2 und \3 auf die Inhalte in den Klammern zurückgegriffen und so der String neu formatiert. Weitere Hinweise findest Du im PHP-Manual. Reguläre Ausdrücke mit preg_replace() sind übrigens Perl-kompatibel, d.h. Du kannst auch im Perl-Teil von SELFHTML mehr darüber erfahren.

    Viele Grüsse
    Achim Schrepfer

    1. Rehi,

      $dat = '2002-04-12';
      $dat_neu = preg_replace('/(dddd)-(dd)-(dd)/','\3.\2.\1');

      $dat_neu = preg_replace('/(dddd)-(dd)-(dd)/','\3.\2.\1',$dat);

      so isses richtig!

      Viele Grüsse
      Achim Schrepfer

      1. Hi Achim,
        und vielen DAnk für die ANtwort.

        $dat_neu = preg_replace('/(dddd)-(dd)-(dd)/','\3.\2.\1',$dat);

        Ich hab es so probiert:
        <?php if(isset($dat)){

        $datneu = preg_replace('/(dddd)-(dd)-(dd)/','\3.\2.\1',$dat);
           echo $datneu;
        }else {echo strftime("%A, %d.%m.%Y "); }?>
        Aber ich bekomme immer noch die gleiche AUsgabe: YYYY-MM-DD
        Haste nochn Tip? Dank DIr  & beste Grüße
        stefan

        1. Huhu Stefan

          $datneu = preg_replace('/(dddd)-(dd)-(dd)/','\3.\2.\1',$dat);
             echo $datneu;

          probier es mal mit doppelten Backslashes also '\3.\2.\1'

          Viele Grüße

          lulu

        2. Hallo Stefan,

          sorry, ich bin ein bisschen zerstreut heute ;-)

          Ich hab es so probiert:
          <?php if(isset($dat)){
          $datneu = preg_replace('/(dddd)-(dd)-(dd)/','\3.\2.\1',$dat);
             echo $datneu;
          }else {echo strftime("%A, %d.%m.%Y "); }?>
          Aber ich bekomme immer noch die gleiche AUsgabe: YYYY-MM-DD

          der Ausdruck konnte ja auch nicht treffen, weil es heissen muss:
          $datneu = preg_replace('/(\d\d\d\d)-(\d\d)-(\d\d)/','\3.\2.\1',$dat);

          sonst sucht der Ausdruck nach dem Buchstaben "d" und das _kann_ ja nicht gehen. Mit "\d" sollte es jetzt aber endlich funken ;-)

          viele Grüsse
          Achim zerstreutheut Schrepfer

          1. vielen Dank,
            so funzt es.

            der Ausdruck konnte ja auch nicht treffen, weil es heissen muss:
            $datneu = preg_replace('/(\d\d\d\d)-(\d\d)-(\d\d)/','\3.\2.\1',$dat);

            Hast Du noch einen Tip, wie ich nun noch den deutschen WOchentag ausgeschrieben dazu ausgeben kann?
            beste Grüße
            Stefan

            1. Hi,

              der Ausdruck konnte ja auch nicht treffen, weil es heissen muss:
              $datneu = preg_replace('/(\d\d\d\d)-(\d\d)-(\d\d)/','\3.\2.\1',$dat);

              nimm einfach http://www.php3.de/manual/de/function.getdate.php, übergebe ihm mit http://www.php3.de/manual/de/function.strtotime.php einen Timestamp zu einem beliebigen Datum. Dann hast Du schon mal den Wochentag als Zahl (0-6). Definiere folgendes Array

              $wochentage = array('Sonntag','Montag' [usw.]);

              und schon kannst Du mit Hilfe des Arrays und des vorher ermittelten Wochentagsindex den Namen des Tages ausgeben.

              viele Grüsse
              Achim Schrepfer

              1. Hallo

                nimm einfach http://www.php3.de/manual/de/function.getdate.php, übergebe ihm mit http://www.php3.de/manual/de/function.strtotime.php einen Timestamp zu einem beliebigen Datum. Dann hast Du schon mal den Wochentag als Zahl (0-6). Definiere folgendes Array

                $wochentage = array('Sonntag','Montag' [usw.]);

                Antwort auch im folgenden Thread:

                http://forum.de.selfhtml.org/?m=51714&t=9362

                Gestern erst gewesen :-)

                Tschüß, Auge