Probleme mit Datumsformatierung bei xampp 1.6.6a

Alles, was PHP betrifft, kann hier besprochen werden.

Probleme mit Datumsformatierung bei xampp 1.6.6a

Postby pinball » 04. April 2008 03:48

Guten Tag allerseits

Ich habe folgendes Problem bei lokal installiertem xampp 1.6.6a / Win XP
Trotz setlocale (LC_TIME,"de_CH.ISO8859-1" );
wird bei echo strftime ( 'Heute haben wir %A den %e. %B %Y ', time () ) ;
das Datums-Format %e, dass bewirkt, dass einstellige Tage eines Monats ohne führende Null ausgegeben werden, lokal nicht beachtet.

Das Resultat ist dann einfach:
Heute haben wir Donnerstag den . April 2008
anstatt Heute haben wir Donnerstag den 3. April 2008.

Mit dem Formal %d ist dann das Resultat richtigerweise:
Heute haben wir Donnerstag den 03. April 2008, was ich aber eben so nicht möchte.

Ich finde via phpinfo auch keinen LC_TIME Eintrag. bei meinem lokalen xampp
Wo muss ich nun Hand anlegen. Ich habe mich nun mehr als zwei Tage geärgert und mich gefragt ob das Formal %e auch wirklich anwendbar ist, bis ich auf die "glorreiche" Idee kam, es auf meiner Domain www.gkammermann.ch zu testen und siehe da, es hat geklappt. Finde ich ein bisschen schwach, dass man bei einer lokalen xampp installation so fies aufgehalten wird.
Wieso frisst xampp lokal denn setlocale (LC_TIME,'de_CH.ISO8859-1' ) ; nicht ???
Ich habe xampp lokal installier um damit lokal zu arbeiten, und nicht um mich tagelang mit einem solch blödsinnigem Verhalten von xampp herum zu ärgern.
Wie löse ich nun dieses Problem, suche seit zwei Tagen nach einer Lösung aber leider ohne Erfolg.
Besten Dank für Hinweise
Gruss aus Basel
pinball
 
Posts: 4
Joined: 04. April 2008 03:28

Postby Nobbie » 04. April 2008 12:36

>Finde ich ein bisschen schwach, dass man bei einer lokalen xampp installation so fies aufgehalten wird.

Dann benutze Xampp besser nicht und installiere Apache, MySQL, PHP usw. einzeln selbst und stelle die richtigen Verknüpfungen her. Dann brauchst Du Dich nicht über Xampp zu ärgern.

P.S.: Und anstatt (wie üblich) am falschen Fleck herumzumotzen, hättest Du längst mal in die Doku schauen können, da das natürlich(!) kein Problem von setlocale ist, auch nicht von PHP, auch nicht von Xampp, sondern von Windows. Siehe http://de3.php.net/manual/de/function.strftime.php

Hinweis: Es ist durchaus möglich, dass Ihre C-Bibliothek nicht alle angegebenen Formatierungszeichen erkennt. In diesem Fall werden diese Zeichen von der PHP-Funktion strftime() nicht unterstützt. Zusätzlich unterstützen nicht alle Plattformen negative Werte eines Timestamps, deshalb könnte der Wertebereich eines Datums durch den Beginn der Unix Epoche begrenzt sein. Das bedeutet, dass z.B. %e, %T, %R und %D (und vielleicht noch weitere) und Zeitangaben vor dem Jan 1, 1970 auf Windowssystemen, einigen Linuxdisrtibutionen und einigen anderen Betriebssytemen nicht funktionieren. Für Windowsbetriebssysteme finden Sie eine komplette Übersicht der gültigen / bekannten Platzhalter im Formatierungsstring auf dieser »MSDN Webseite.


und auf der MSDN Webseite stehen die Platzhalter alle drin (einfach auf den Link klicken) und siehe da: %e ist nicht dabei - geht also unter Windows nicht. Beschwere Dich bei Bill Gates.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Postby sari42 » 04. April 2008 13:20

ein windows workaround steht sogar auf der von Nobbie erwähnten Doku-Seite:
http://de3.php.net/manual/de/function.s ... .php#53340
sari42
 
Posts: 800
Joined: 27. November 2005 18:28

Postby pinball » 04. April 2008 16:51

P.S.: Und anstatt (wie üblich) am falschen Fleck herumzumotzen, hättest Du längst mal in die Doku schauen können, da das natürlich(!) kein Problem von setlocale ist, auch nicht von PHP, auch nicht von Xampp, sondern von Windows. Siehe http://de3.php.net/manual/de/function.strftime.php

Hallo Nobie

Ich bin kein Serverspezialist. In der Zwischenzeit hat mich auch ein Kollege darauf hingewiesen, dass dies ein Windows Problen sein muss. Aber eines muss ich Dir lassen, trotz dem Zusammensch... den Du mir gepostet hast! Du bist der einzige und erste der mich wenigstens kompetent und glaubhaft darüber aufklärt, dass dies kein xampp Problem sei, sondern eben wieder einmal ein Problem von Windows. Da ich mich erst seit ca. 3 Wochen ernsthaft mit PHP beschäftige, kannst Du mir eventuell nachsehen, dass ich mich mit dem Suchen dieses Problems auch etwas schwer getan habe und auch ein wenig überfordert fühlte. Ich habe mich fast zu tode gegoogelt.

So nebenbei ein Tipp aus dem SELFPHP-Forum vom heute:
// strftime ( 'Heute haben wir (ereg (%d, '/0[1-9]/') ? substr (%d, 1) : %d) den %e. %B %Y ', time () ) ;

Bringt nichts, abgesehen vom auch falschen quoten. Dies sind dann eben vielmals auch die Gründe von Frust und nochmals Frust, für Einsteiger.

Also nochmals vielen Dank für den Hinweis. Mit Deiner Antwort kann ich wenigstens etwas Anfangen.
Ein schönes Wochendende wünsch ich Dir. Den anderen natürlich auch.
Grüsse aus Basel
pinball
 
Posts: 4
Joined: 04. April 2008 03:28

Postby Wiedmann » 04. April 2008 17:20

Trotz setlocale (LC_TIME,"de_CH.ISO8859-1" );
wird bei echo strftime ( 'Heute haben wir %A den %e. %B %Y ', time () ) ;
das Datums-Format %e, dass bewirkt, dass einstellige Tage eines Monats ohne führende Null ausgegeben werden, lokal nicht beachtet.

Code: Select all
<?php
setlocale(LC_TIME, array('de_CH.ISO8859-1', 'deu_che'));
echo strftime('Heute haben wir %A den '
    . (('WIN' === strtoupper(substr(PHP_OS, 0, 3))) ? '%#d' : '%e')
    . '. %B %Y', time());
?>
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby pinball » 05. April 2008 11:56

Hallo Wiedmann
Danke für den Codeschnipsel. Dies ist es! Langsam blicke ich ein wenig durch.
Ein schönes Wochenende
Gruss aus Basel :D :D
pinball
 
Posts: 4
Joined: 04. April 2008 03:28

Postby Nobbie » 05. April 2008 15:41

Nichts gegen die Wiedmann'sche Lösung - aber eigentlich hatte sari42 Dir den Hinweis gegeben auf die (vollständige und aus meiner Sicht bessere) Lösung auf den Seiten von www.php.net

Lies nochmal die ganzen Bemerkungen auf http://de3.php.net/manual/de/function.s ... .php#53340

Ohnehin sollte die o.g. Seite Deine "PHP-Bibel" werden - bei jedem Problemchen IMMER(!) erst da nachschauen bei der betreffenden Funktion, was da an Anmerkungen steht. Auch dieses Problem ist dort vollständig abgehandelt worden.

Bookmarke Dir die Doku von dort!
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Postby pinball » 05. April 2008 18:54

Ohnehin sollte die o.g. Seite Deine "PHP-Bibel" werden - bei jedem Problemchen IMMER(!) erst da nachschauen bei der betreffenden Funktion, was da an Anmerkungen steht. Auch dieses Problem ist dort vollständig abgehandelt worden.

Hallo Nobbie
Danke nochmals für den Hinweis. Ich gehöre sicher nicht zu denjenigen, die wegen jedem "Problemchen" sofort das Forum, die Foren beansprucht. Da ich ja erwähnte, dass ich zu wenig Erfahrung mit Server habe, habe ich dann durch Euch erfahren, das ich eben xampp auf Windows fahre und dies zu beachten habe. php.net ist mir schon ein Begriff, nur als PHP Einsteiger musst Du mir trotzdem zugestehen, das ich in meinen Fall (also das Problem mit der Datumsformatierung) wo finde ich nun die Lösung, dies für mich eben gar nicht so einfach war.
Das Problem ist also dank Eurem Einsatz gelöst. Das ich lokal WIN fahre, dies werde ich ja jetzt dank Euren Hinweisen , immer im Auge behalten.
Also nochmals Danke, für Euren Einsatz.
Gruss aus Basel
pinball
 
Posts: 4
Joined: 04. April 2008 03:28


Return to PHP

Who is online

Users browsing this forum: No registered users and 16 guests