Ankündigung

Einklappen
Keine Ankündigung bisher.

setlocale... date!=strftime???

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • setlocale... date!=strftime???

    PHP-Code:
    <?
    header("Content-Type: text/plain; charset=utf-8");
    setlocale(LC_ALL, "de_DE.UTF8");
    echo date("F")."\n".strftime("%B");
    ?>
    liefert mir:

    Code:
    March
    März
    Sollte sich setlocale nicht auch auf date() auswirken?
    simbo.de


  • #2
    Nö, wer sagt das? Das Manual auf jeden Fall nicht ^^
    Zitat von Manual
    Um Datumsangaben in anderen Sprach-/Zeitzonen-Formaten auszugeben, sollten Sie die Funktionen setlocale() und strftime() benutzen.
    date()
    Nicht jeder Fehler ist ein Bug.

    Kommentar


    • #3
      hm... also ich spiel hier grade an nem Template für LoudBlog rum und da wird eben date() zur Datumsformatierung verwendet. Und ich hätte gerne ausgeschriebene Monats- und Tagesnamen.

      Wordpress benutzt auch die date()-Funktion zur Datumsformatierung und da gibts auch deutsche Namen. Dummerweise hab ich bisher noch nicht rausgefunden, was die da anders machen...
      simbo.de

      Kommentar


      • #4
        Sicher, dass sie nicht einfach beides verwenden? Sprich: date() für Zahlenangaben (Uhrzeit und co) und strftime() für Daten-Namen?

        Wo ist denn das Problem, wenn du nun strftime für die Namen verwendest? Es geht, was will man mehr? ^^ Einmal am Anfang setlocale(..) und dann einfach nur noch strftime() und gut is.

        Übrigens: de_DE.utf8 kann auf Windows-Rechnern zu Problemen führen (bei mir hat ers zB völlig ignoriert )
        Nicht jeder Fehler ist ein Bug.

        Kommentar


        • #5
          das problem ist, dass ich in der Template-Sprache von LoudBlog keine PHP Befehle einbinden kann und ich das Datum mit beispielsweise folgendem Befehl ausgeben lasse:

          Code:
          <lb:posted format="Y-m-d" />
          ...und da geht eben nur die date() Formatierung, sonst hätte ich schon längst auf strftime zurückgegriffen...

          Und wie ich eben herausgefunden habe arbeitet Wordpress auch nur mit Arrays der Namen, die sich dann die korrekte Übersetzung aus den mo/po-Sprachdateien holen...

          Na dann vergess ich das einfach mit meinen ausgeschriebenen Namen und nehm ne andere Formatierung...

          Trotzdem danke...
          simbo.de

          Kommentar


          • #6
            Zitat von KingCrunch
            Übrigens: de_DE.utf8 kann auf Windows-Rechnern zu Problemen führen (bei mir hat ers zB völlig ignoriert )
            Unter windows funktioniert "DEU" oder auch "german", ist dann aber immer noch nicht utf-8

            Kommentar


            • #7
              .. oder auch de_DE Aber (findet man in den Comments zu setlocale) die gleichzeitige Angabe des Zeichensatzes macht wohl Ärger. In den Fall nachträglich auf utf8 setzen ^^
              Nicht jeder Fehler ist ein Bug.

              Kommentar


              • #8
                de_DE funktioniert bei mir unter Windows XP nicht.
                Wird auch nicht bei http://msdn.microsoft.com/library/de...ry_strings.asp aufgeführt.
                Wie setzt man ein locale nachträglich auf utf?

                Kommentar


                • #9
                  Hab mir die weiterführenden Links nicht angeschaut, aber ich habe es mit de_DE ausprobiert und es kam "M?rz" raus (naja, utf-8-Problem halt ). In den Comments im Manual empfiehlt derjenige die Verwendung von iconv() zur nachträglichen Konvertierung. Spricht ja auch nix dagegen

                  Zitat von Manual
                  string iconv ( string in_charset, string out_charset, string str )
                  PHP-Code:
                  echo iconv("ISO-8859-1","UTF-8",$datestring); 
                  Nicht jeder Fehler ist ein Bug.

                  Kommentar


                  • #10
                    PHP-Code:
                    <?php
                    echo phpversion(), "\n";
                    echo 
                    php_uname(), "\n";
                    echo 
                    php_sapi_name(), "\n";
                    var_dump(setlocale(LC_ALL"de_DE"));
                    echo 
                    strftime("%B\n");
                    var_dump(setlocale(LC_TIME"de_DE"));
                    echo 
                    strftime("%B\n");
                    ?>
                    5.2.0
                    Windows NT LDX0102 5.1 build 2600
                    cli
                    bool(false)
                    March
                    bool(false)
                    March
                    Was ist bei Dir anders, wenn de_DE unter windows funktioniert?

                    Kommentar


                    • #11
                      *hust* gestern gings noch ^^
                      Code:
                      5.2.1
                      Windows NT LAPTOP 5.1 build 2600
                      apache2handler
                      bool(false)
                      March
                      bool(false)
                      March
                      Unterscheidet sich trotzdem ziemlich

                      Mein Test-Ding hab ich gelöscht, deshalb weiß ich jetzt den konkreten Unterschied nicht mehr, aber es muss offensichtlich doch ein anderer Ländercode als de_DE gewesen sein ^^
                      Nicht jeder Fehler ist ein Bug.

                      Kommentar


                      • #12
                        Guckt doch einfach mal ins Manual http://de.php.net/setlocale und sucht nach "german"

                        Kommentar


                        • #13
                          Über den Punkt sind wir doch schon auf Seite 1 hinaus, Zergling

                          Kommentar


                          • #14
                            Hä dann wandelts halt um:
                            PHP-Code:
                            <?php
                            header
                            ('Content-type: text/html; charset= utf-8');
                            setlocale (LC_ALL'de_DE@euro''de_DE''de''ge');
                            echo 
                            iconv('windows-1252''utf-8'strftime('%B'));
                            ?>
                            Klappt bei mir unter Windows XP zumindest ohne Probleme.

                            Kommentar


                            • #15
                              Darüber sind wir auch schon hinaus xD
                              Nicht jeder Fehler ist ein Bug.

                              Kommentar

                              Lädt...
                              X