Ronald Beaugeois: Datum und Uhrzeit auf deutsch

Hallo Forumsuser,

hab es nun geschafft das aktuelle Datum per php auf meine Seite zu integrieren.

<?php setlocale(LC_TIME, 'de_DE'); echo strftime('%A, %d. %B %Y'); ?>

leider steht es da auf englisch, und wir hätten es gerne in deutsch.

Sunday, 10. March 2002

gefunden hab ich dazu folgendes:

Linux: setlocale(LC_TIME, 'de_DE');
  Win: setlocale(LC_TIME, 'German_Germany');

ich denke es geht darum mit was unser Provider arbeitet.
habe beides ausprobiert, doch es wird immer in englisch angezeigt.

Unsere Seite liegt bei Strato.

weiss vielleicht jemand woran das liegt?

würd mich über antworten freuen

gruß ...ron

  1. Hi Ron!

    Das sollte richtig sein:

    setlocale ("LC_TIME","ge");

    Clemens

    1. Hi Ron!

      Das sollte richtig sein:

      setlocale ("LC_TIME","ge");

      Clemens

      <?php setlocale ("LC_TIME","ge"); echo strftime('%A, %d. %B %Y'); ?>

      leider ändert sich daran auch nichts. bleibt immer noch englisch.

      1. Hi!

        leider ändert sich daran auch nichts. bleibt immer noch englisch.

        Wäre mir neu, wenn das so einfach in deutsch ginge! In englisch jedenfalls geht es auch mit Date, siehe:

        date
        (PHP 3, PHP 4 >= 4.0.0)

        date -- Formatiert ein(e) angegebene(s) Zeit/Datum
        Beschreibung:

        string date (string format [, int timestamp])

        Gibt einen formatierten String anhand eines vorzugebenden Musters zurück. Dabei wird entweder der angegebene timestamp oder die gegenwärtige lokale Zeit berücksichtigt, wenn kein timestamp gegeben ist.

        Die folgenden Platzhalter werden zur Formatierung benutzt:

        a - "am" oder "pm"

        A - "AM" oder "PM"

        B - Swatch-Internet-Zeit

        d - Tag des Monats, 2-stellig mit führender NULL: "01" bis "31"

        D - Tag der Woche als 3 Buchstaben, z.B. "Fri"

        F - Monat als ganzes Wort, z.B "January"

        g - Stunde im 12-Stunden-Format ohne führende NULL: "1" bis "12"

        G - Stunde im 24-Stunden-Format ohne führende NULL: "0" bis "23"

        h - Stunde im 12-Stunden-Format: "01" bis "12"

        H - Stunde im 24-Stunden-Format: "00" bis "23"

        i - Minuten: "00" bis "59"

        I (großes 'i') - "1" bei Sommerzeit, sonst "0"

        j - Tag des Monats ohne führende NULL: "1" bis "31"

        l - (kleines 'L') ausgeschriebener Tag der Woche, z.B. "Friday"

        L - boolscher Wert für Schaltjahre: "0" oder "1"

        m - Monat: "01" to "12"

        n - Monat ohne führende NULL: "1" bis "12"

        M - Monat als 3 Buchstaben, z.B. "Jan"

        O - Zeitdifferenz zur Greenwich Zeit in Stunden (z.B. +0200)

        r - Nach RFC 822 formattiertes Datum; z.B. "Sun, 7 Oct 2001 14:56:02 +0200" (seit PHP 4.0.4)

        s - Sekunden: "00" bis "59"

        S - Anhang der englischen Aufzählung, 2 Buchstaben, z.B. "th" [bei 4 für fourth], "nd" [bei 2 für second]

        t - Anzahl der Tage des angegebenen Monats: "28" bis "31"

        T - Zeitzoneneinstellung des Rechners, z.B. "MDT"

        U - Sekunden seit Beginn der UNIX-Epoche (1.1.1970)

        w - Wochentag beginnend mit "0" (Sonntag) bis "6" (Samstag)

        Y - Jahr als vierstellige Zahl, z.B. "1999"

        y - Jahr als zweistellige Zahl, z.B. "99"

        z - Tag des Jahres: "0" bis "365"

        Z - Offset der Zeitzone gegen GTM ("-43200" bis "43200") in Minuten

        Kannst Du alles mit Beispielen prima nachlesen unter:

        http://www.dynamicwebpages.de/php/function.date.php

        Mit deutschem Text geht das meines Erachtens nur mit einem Array, sowas wie:

        $tage = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag",
          "Freitag","Samstag");

        $tag = date("w");

        nachlesen kannst Du das unter:

        http://www.schattenbaum.net/php/datum2.php

        Grüße
          Andreas

        1. Moin,

          Wäre mir neu, wenn das so einfach in deutsch ginge! In englisch jedenfalls geht es auch mit Date, siehe:

          [stupid quote gesnippt]

          Man lernt halt immer wieder dazu. Wichtig ist der Teil den du nicht mitkopiert hast:

          Um Datumsangaben in anderen Sprach-/Zeitzonen-Formaten auszugeben, sollten sie die Funktionen setlocale() und strftime()  nutzen.

          --
          Henryk Plötz
          Grüße aus Berlin

          1. Moin!

            [stupid quote gesnippt]

            Man lernt halt immer wieder dazu. Wichtig ist der Teil den du nicht mitkopiert hast:

            Sorry, nächstes mal schreibe ich das mal eben aus dem Kopf runter!

            Um Datumsangaben in anderen Sprach-/Zeitzonen-Formaten auszugeben, sollten sie die Funktionen setlocale() und strftime()  nutzen.

            Warum gibt dann folgendes bei mir "sunday"???

            <?
            setlocale ("LC_TIME", "de_DE");
            print (strftime ("%A.\n"));
            ?>

            Mit der Array-Methode geht es jedenfalls prima!

            Grüße
              Andreas

          2. Moin,

            Wäre mir neu, wenn das so einfach in deutsch ginge! In englisch jedenfalls geht es auch mit Date, siehe:

            [stupid quote gesnippt]

            Man lernt halt immer wieder dazu. Wichtig ist der Teil den du nicht mitkopiert hast:

            Um Datumsangaben in anderen Sprach-/Zeitzonen-Formaten auszugeben, sollten sie die Funktionen setlocale() und strftime()  nutzen.

            --
            Henryk Plötz
            Grüße aus Berlin

            ich dachte ja genau das mit meiner codezeile gemacht zu haben.

            <?php setlocale ("LC_TIME","ge"); echo strftime('%A, %d. %B %Y'); ?>

            aber funktionieren tut es nicht.
            egal ob ich

            setlocale(LC_TIME, 'de_DE');
            setlocale(LC_TIME, 'German_Germany');
            setlocale(LC_TIME, 'Ge');
            setlocale(LC_TIME, 'De');

            eintippe.

            komisch,komisch

            gruß ron

            1. Hallo Ron!

              aber funktionieren tut es nicht.
              [...]
              setlocale(LC_TIME, 'de_DE');

              Wie Henryk schon sagte, der Provider muss die Sprachunterstützung für die jeweilige Landesprache installiert haben, dann funktioniert das auch.

              Ansonsten schafft folgender Codeschnipsel Abhilfe:

              // Übersetzungsarray Englisch->Deutsch
              $trans=array(
              "Monday"=>"Montag", "Tuesday"=>"Dienstag", "Wednesday"=>"Mittwoch", "Thursday"=>"Donnerstag", "Friday"=>"Freitag", "Saturday"=>"Sonnabend", "Sunday"=>"Sonntag",

              "Mon"=>"Mo", "Tue"=>"Di", "Wed"=>"Mi", "Thu"=>"Do", "Fri"=>"Fr", "Sat"=>"Sa", "Sun"=>"So",

              "January"=>"Januar", "February"=>"Februar", "March"=>"März", "April"=>"April", "May"=>"Mai", "June"=>"Juni", "July"=>"Juli", "August"=>"August", "September"=>"September", "October"=>"Oktober", "November"=>"November", "December"=>"Dezember",

              "Jan"=>"Jan", "Feb"=>"Feb", "Mar"=>"März", "Apr"=>"Apr", "May"=>"Mai", "Jun"=>"Jun", "Jul"=>"Jul", "Aug"=>"Aug", "Sep"=>"Sep", "Oct"=>"Okt", "Nov"=>"Nov", "Dec"=>"Dez"
              );

              // englischen String erzeugen:
              $dattext=strftime(".....",$timestamp);
                                 ^^^^^---Format nach Wunsch

              // Erzeugten String übersetzen:
              $datumtext= strtr ($dattext,$trans);

              Gruss,
               Carsten

              1. Dank dir Carsten und allen anderen, hab das jetzt mittlerweile hinbekommen, durch eure hilfe.

                habs einfach mit der array methode gemacht...

                gruß ron

        2. schade das es nicht zu gehen scheint, obwohl ich auf phpseiten eigentlich genau die lösung des problems gedacht gefunden zu haben.

          jedenfalls wurde der eindruck auf mich gemacht. naja funktioniert hat es ja nicht.
          aber sehr interessant was du mir da als antworten gegeben hast. auch die links werde ich mir mal anschauen, und die lösung mit array scheint ja auch noch ne möglichkeit.

          danke dir, gruß ron

  2. Moin!
    mein Tipp wäre:

    echo date(d.m.Y);

    Grüße
      Andreas

    1. Moin!
      mein Tipp wäre:

      echo date(d.m.Y);

      Grüße
        Andreas

      ist zwar ne alternative, doch hätten wir es gerne mit wörtern, damit es nicht so technisch rüberkommt.

    2. Moin,

      echo date(d.m.Y);

      Nein, da fehlen die Anführungszeichen.

      Ronald: Bei mir läuft
      setlocale("LC_TIME", "de_DE.roman8"); echo strftime("%d. %B %Y, %H:%M:%S Uhr"); problemlos. Vielleicht fragst du mal deinen Hoster, evt. haben die die Sprachunterstützung nicht installiert. Ausserdem solltest du den Rückgabewert von setlocale abfragen. Normalerweise gibt es dir die aktuell eingestellte locale zurück, wenn jedoch was falsch läuft (keine Unterstüzung für die angeforderte locale, keine locale-Funktion überhaupt) dann kriegst du false zurück.

      Ausserdem kannst du dir die Ausgabe von phpinfo() mal ansehen. Ich bin mir nicht sicher, aber ich vermute mal dass "GNU gettext support" auf enabled stehen sollte damit die ganze Sache funktioniert.

      --
      Henryk Plötz
      Grüße aus Berlin

      1. hi Henryk,

        phpinfo() hab ich gemacht, doch konnte ich keine angaben zu GNU finden. mit suchenfunktion durchsucht.

        Ausserdem solltest du den Rückgabewert von setlocale abfragen.

        wie frage ich das denn ab. bei Javascript ist es ja alert. doch bei PHP weis ich es noch nicht.
        hab erst vor zwei stunden mich angefangen mit php zu beschäftigen.

        gruß ron

        1. Moin,

          wie frage ich das denn ab. bei Javascript ist es ja alert. doch bei PHP weis ich es noch nicht.
          hab erst vor zwei stunden mich angefangen mit php zu beschäftigen.

          Na ein
          if(!setlocale(....)) die("setlocale-Aufruf fehlgeschlagen");
          sollte für den Anfang ausreichen.

          --
          Henryk Plötz
          Grüße aus Berlin