stefan: Datum Wochentage von engl. in de

hallo,
ich habe eine Ausgabe: date("D") und würde diese gerne in eien deutsche Ausgabe umwandeln. Also nicht Mon, Tue etc. sonder MO, DI etc.
vielen Dank und aller beste Grüße
stefan

  1. hallo

    ------8< *SNIP* >8------
    <?PHP
    $day = date("D");
    $tag;

    switch ($day) {
     case "Mon":
      $tag = "MO";
      break;
     case "Tue":
      $tag = "DI";
      break;
     case "Wed":
      $tag = "MI";
      break;
    ------8< *SNIP* >8------
     usw.
    Sollte etwa so aussehen. Wenn das funktioniert ist das mein erstes PHP-Skript! (SelfPHP ist mein Freund)

    MfG

    Tom2

    1. Mahlzeit,

      Sollte etwa so aussehen. Wenn das funktioniert ist das mein erstes PHP-Skript! (SelfPHP ist mein Freund)

      Nich hauen, aber das sind Kanonen auf Spatzen. ;) Die ärmsten.

      Wenn von Hand, dann mach doch mit einem assoziativen Array.

      $wochentage['monday'] = 'Montag';

      ...

      $wochentage['sunday'] = 'Sonntag';

      print $wochentage[strtolower(date('D'))];

      Gruss, Thoralf

      1. Mahlzeit,

        En Guete

        Sollte etwa so aussehen. Wenn das funktioniert ist das mein erstes PHP-Skript! (SelfPHP ist mein Freund)

        Nich hauen, aber das sind Kanonen auf Spatzen. ;) Die ärmsten.

        Hä? Was soll das heissen? (ausser, dass du eine bessere Lösung hast :)

        Wenn von Hand,...

        Kenne PHP nicht, war mein erster Gehversuch (und du hilfst mir soeben wieder aufzustehen *g*).

        dann mach doch mit einem assoziativen Array.

        Ich wusste nicht, dass es sowas in PHP gibt.

        Rein primitiv-programmiertechnisch funktioniert meine Lösung doch auch oder?

        MfG

        Tom2

        1. Mahlzeit,
          En Guete

          *bg*

          Nich hauen, aber das sind Kanonen auf Spatzen. ;) Die ärmsten.
          Hä? Was soll das heissen? (ausser, dass du eine bessere Lösung hast :)

          Das heisst, dass die Lösung zu aufwendig ist. ;)

          Wenn von Hand,...
          Kenne PHP nicht, war mein erster Gehversuch (und du hilfst mir soeben wieder aufzustehen *g*).

          Gern doch. ;)

          dann mach doch mit einem assoziativen Array.
          Ich wusste nicht, dass es sowas in PHP gibt.

          Gibt es, und die sind im Zugriff erstaunlicherweise recht schnell.

          Rein primitiv-programmiertechnisch funktioniert meine Lösung doch auch oder?

          Ja, vorbehaltlich übersehener Tippfehler. ;)

          Thoralf

          1. Hallo Thoralf

            Nich hauen, aber das sind Kanonen auf Spatzen. ;) Die ärmsten.
            Hä? Was soll das heissen? (ausser, dass du eine bessere Lösung hast :)
            Das heisst, dass die Lösung zu aufwendig ist. ;)

            Vom Programmieraufwand oder vom Rechenaufwand her?
            Ich hab mir über den Mittag bei einem Kollegen das Buch "Jetzt lerne ich PHP & MySQL" ausgeliehen und werde dieses Wochenende mal reinschauen.
            Ich bin in ASP und SQL einigermassen fit, kannst du mir ein Buch für den Umstieg empfehlen?

            Wenn von Hand,...
            Kenne PHP nicht, war mein erster Gehversuch (und du hilfst mir soeben wieder aufzustehen *g*).
            Gern doch. ;)

            Dankeschön.

            dann mach doch mit einem assoziativen Array.
            Ich wusste nicht, dass es sowas in PHP gibt.
            Gibt es, und die sind im Zugriff erstaunlicherweise recht schnell.

            Wo bekommt man solche Performance-Infos her?

            MfG und bestem Dank

            Tom2

            1. Hallo Tom, hallo Forum,

              Vom Programmieraufwand oder vom Rechenaufwand her?

              Beides, Du hast eine komplette Kontrollstruktur (switch), Auge und Ich 'nur' assoziative Arrays. Ist etwas schwer zu erklären. PHP kann für die Arrays komplett interne (hoffentlich optimierte) Befehlsfolgen verwenden. Für das switch muss VOR der Verwendung der internen Rechnerei erstmal Dein Code 'verstanden' werden. Unwesentlich, aber eben doch Mehraufwand. Und der läppert sich.
              Der Aufwand, den Du hast, ist geringer, da bei Erstcoding leichter. Aber gerade bei späterer Pflege wirst Du Bereich mit 20-zeiligen Code-Geflechten lieben ;) ;)

              Ich hab mir über den Mittag bei einem Kollegen das Buch "Jetzt lerne ich PHP & MySQL" ausgeliehen und werde dieses Wochenende mal reinschauen.
              Ich bin in ASP und SQL einigermassen fit, kannst du mir ein Buch für den Umstieg empfehlen?

              Sorry, kann ich nicht. Ich bin von ASM/C++ auf PHP geklettert, da ist die Entwicklung sehr ähnlich. Ich selbst nutze da schon länger keine Bücher mehr, zu trocken und fehlerbehaftet. Empfehlenswert sind die 'Standard'-Seiten und dort die Nutzer-Kommentare. Da ist gerade für nen Programmierer deutlich mehr an praktischer Erfahrung rauszusammeln. Dürfte also auch Dir mehr helfen. :)

              Dankeschön.

              :o)

              dann mach doch mit einem assoziativen Array.
              Ich wusste nicht, dass es sowas in PHP gibt.
              Gibt es, und die sind im Zugriff erstaunlicherweise recht schnell.
              Wo bekommt man solche Performance-Infos her?

              Selbst testen, auf Windows merkt man jeden Performance-Fehler sehr viel besser als letztlich auf *nix, da Windows da sehr viel anfälliger ist.
              Gerade solche Sachen finde ich oft in Foren, Boards und in den (moderierten) Kommentaren auf php.net & co.

              Gruss, Thoralf, der sich weiss Gott nicht für einen PHP-Guru hält ;)

      2. Hallo

        Wenn von Hand, dann mach doch mit einem assoziativen Array.

        $wochentage['monday'] = 'Montag';

        ...

        $wochentage['sunday'] = 'Sonntag';

        print $wochentage[strtolower(date('D'))];

        Noch einfacher, alles in ein Array:
        $tage = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");  //Festlegung der deutschen Schreibweise, beginnend bei So = 0

        $tag = date("w");  //Wochentag ermitteln
        echo $tage[$tag];  //Wochentag anzeigen

        Von http://www.schattenbaum.net entnommen

        Tschüß, Auge

        1. Hallo,

          Noch einfacher, alles in ein Array

          stimmt natürlich. Auge hat recht. Wenn ich mich nur auf date('D') konzentriere, läßt die Betriebsblindheit grüssen. :)

          So geht's noch schneller.

          Thoralf

  2. Mahlzeit,

    ich habe eine Ausgabe: date("D") und würde diese gerne in eien deutsche Ausgabe umwandeln. Also nicht Mon, Tue etc. sonder MO, DI etc.

    http://www.php.net/manual/de/function.setlocale.php ist dein Freund, aber unbedingt(!) auch die Kommentare lesen.

    setlocale( LC_TIME, '' ); # Die Standard-Werte des Servers
    setlocale( LC_TIME, 'de_DE' ); # fuer deutsche Sprache

    Zitat von http://www.php.net/manual/de/function.date.php
    "Um Datumsangaben in anderen Sprach-/Zeitzonen-Formaten auszugeben, sollten sie die Funktionen  setlocale() und strftime() nutzen."

    Deswegen ürde ich die Ausgabe selbst dann aber mit http://www.php.net/manual/de/function.strftime.php machen.

    MfG, Thoralf

    1. hallo & vielen Dank erstmal,

      setlocale( LC_TIME, '' ); # Die Standard-Werte des Servers
      setlocale( LC_TIME, 'de_DE' ); # fuer deutsche Sprache

      ich benutze:
      $tstamp = mktime(0, 0, 0, date("m"), date("d")-1, date("Y"));
      $gestern = date("D", $tstamp); // ISO-8601 Format
      um den Wochentag zu erhalten. Wie kann ich das denn nun mit strftime bearbeiten.
      grüße stefan

      1. Hier ein Auszug aus nem alten Script von mir:

        $m = date( 'm' ); $d = date( 'd' ); $Y = date( 'Y' );
            $heute  = mktime(0, 0, 0, $m , $d, $Y);
            $gestern  = mktime(0, 0, 0, $m , $d - 1, $Y);
            $vorgestern  = mktime(0, 0, 0, $m , $d - 2, $Y);

        setlocale( LC_TIME, 'de_DE' );

        und nun hängt es davon ab, was Du mit dem Wochentag machst. Wenn es nur um den geht:

        $wochentag = strftime( '%A', $gestern );

        Schau Dir mal die Links an, die ich gepostet habe, da stehen die einzelnen Format-Strigs drin. Falls Du denn auch abgekürzten Wochentag und sowas brauchst.

        HtH

        1. ja, genauso hab ich es auch gelöst.

          $m = date( 'm' ); $d = date( 'd' ); $Y = date( 'Y' );
              $heute  = mktime(0, 0, 0, $m , $d, $Y);
              $gestern  = mktime(0, 0, 0, $m , $d - 1, $Y);
              $vorgestern  = mktime(0, 0, 0, $m , $d - 2, $Y);

          setlocale( LC_TIME, 'de_DE' );

          bis hier ist es klar

          und nun hängt es davon ab, was Du mit dem Wochentag machst. Wenn es nur um den geht:

          $wochentag = strftime( '%A', $gestern );

          Nun noch eine Frage: Wie kann ich alle Variablen, also $heute, $gestern etc. formatieren. Hab ich nicht hinbekommen?

          HtH

          1. $wochentag = strftime( '%A', $gestern );

            Nun noch eine Frage: Wie kann ich alle Variablen, also $heute, $gestern etc. formatieren. Hab ich nicht hinbekommen?

            Diese Variablen sind allesamt sog. Timestamps, mit strftime kannst Du diese Timestamps in jedem beliebigen Format ausgeben. Schau halt mal den Link an, der ist auf Deutsch, da ist jedes einzelne (%A, %a, %D usw.) beschrieben, daraus baust Du Dir Dein Zeitformat zusammen.

            Gruss, Thoralf