Internationalisierung von Zeitangaben
Eddie
- php
Hallo allerseits,
ich will Zeitangaben aus einer MySQL-Datenbank (datetime) abhängig vom Sitz und der Sprache des Betrachters anzeigen.
Der datetime-Wert "2001-04-25 17:00:00" soll also bspw. in folgenden Varianten angezeigt werden:
Die Formatierungen sind dabei das geringste Problem, nur wie bekomme ich raus (serverseitig, nicht per JavaScript!), in welcher Zeitzone der User sitzt?
Gibt's da eine fertige PHP-Funktion, oder eine Servervariable?
Danke für eure Hilfe,
Eddie
Die Formatierungen sind dabei das geringste Problem, nur wie bekomme ich raus (serverseitig, nicht per JavaScript!), in welcher Zeitzone der User sitzt?
Gar nicht, diese Information gehört nicht zu dem, was der Browser dem Server mitteilt oder der Server in irgendeiner Form sicher aus den gelieferten Daten schätzen könnte. Du wirst die Zeit per Javascript ausgeben müssen, zusammen mit einem <noscript>-Block und der Standardzeit für den Fall, daß Javascript abgeschaltet ist.
Halihallo Eddie
Die Formatierungen sind dabei das geringste Problem, nur wie bekomme ich raus (serverseitig, nicht per JavaScript!), in welcher Zeitzone der User sitzt?
Gar nicht, oder nur unzuverlässig. Über eine Hostauflösung oder
IP-Adresse liesse sich (wenn auch unzuverlässig) das Land auflösen,
wobei dies nicht zu 100% funktioniert. Über das Land könnte man
ggf. eine Zeitzoneneinordnung erreichen, wobei es Länder gibt, die
über 4 Zeitzonen haben (sprich: die Lösung taugt nicht)! - Aber lass
dies mal lieber, denn dies macht mehr Probleme als Nutzen.
=> Der Kunde bzw. der Client weiss selber am besten, wo er ist und
somit Javascript:
http://selfhtml.teamone.de/javascript/objekte/date.htm#get_timezone_offset
Diesen Offset in Sekunden von GMT kannst du an dein Script
übersenden. Die Sprache liesse sich Serverseitig über
HTTP_ACCEPT_LANGUAGE auslesen.
Gibt's da eine fertige PHP-Funktion, oder eine Servervariable?
Nein.
Viele Grüsse
Philipp
Hallo allerseits,
http://selfhtml.teamone.de/javascript/objekte/date.htm#get_timezone_offset
Diesen Offset in Sekunden von GMT kannst du an dein Script
übersenden.
Mmmh, ok. Jetzt habe ich nur noch das Problem der Umrechnung:
"2001-04-25 19:00:00" (Serverzeit)
"2001-04-26 01:00:00" (Bangkok, neuer Tag!)
und
"2001-04-25 03:00:00" (Serverzeit)
"2001-04-24 21:00:00" (NewYork, alter Tag!)
Gibt's da eine passende Funktion? Ich habe unter obigem Link nichts gefunden. Was ich brauche ist etwas in der Art
myDate.addHours(5);
Oder muss ich mir auch den Algorithmus selber schreiben?
Danke für eure Hilfe,
Eddie
hi,
Was ich brauche ist etwas in der Art
myDate.addHours(5);
schau dir strtotime() an.
gruss,
wahsaga
Was ich brauche ist etwas in der Art
myDate.addHours(5);schau dir strtotime() an.
Es wär weitaus sinniger, gleich aus der Datenbank die Unix-Zeit auszulesen und diesen Wert dann in Javascript mit Date.setTime() weiter zu verwenden, anstatt die Datenbank erst einen Zeittext erzeugen zu lassen, der dann von PHP wieder in eine Zahl umgewandelt werden muß:
[SQL] select unix_timestamp(zeit) ...
Ergebnis in die PHP-Variable $zeit verfrachten, dann:
[PHP] echo "var zeit = new Date(); zeit.setTime(".($zeit*1000)."); document.write(zeit.toLocaleString());";
(<script> und <noscript> der Übersichtlichkeit halber weggelassen)