hallo,
die problematik wurde hier im forum schon diskutiert. allerdings nicht so, dass sie mir etwas hilft..
ich möchte auf einer internationalen seite, bei der sich die nutzer registrieren müssen, gewährleisten, dass überall die richtige uhrzeit angezeigt wird. und zwar mit möglichst wenig input von seiten des users.
der timestamp soll, egal, in welchem land sich der user befindet in der greenwich time (winterzeit) gespeichert werden. das ist vorraussetzung und bekannt. dennoch sind damit leider noch nicht alle probleme aus dem weg geräumt..
man könnte eine datenbank aufbauen, in der gespeichert wird in welchem land und welcher region (da manche länder mehrere zeitronen haben) welche zeitverschiebung miteinzuberechnen ist. dazu kommt jedoch, dass unabhängig von den zeitzonen die meisten länder die sommerzeit nutzen, andere jedoch nicht. da ich land und region von meinen nutzern kenne wäre das die sauberste lösung. allerdings ist das aufbauen einer solchen datenbank und die umrechnung später in php leichter gesagt als getan. denn die sommerzeiten kommen nicht nur in unterschiedlichen ländern vor, sie fangen auch nicht in jedem land zum gleichen datum an und hören zum gleichen datum auf.
eine weitere möglichkeit wäre, per javascript die aktuelle zeit vom browser auszulesen und mit der zeit vom server zu vergleichen, die differenz auf volle stunden zu runden und das in der session als mit einzuberechnende differenz speichern. auch das ist eine einigermaßen annehmbare lösung. abgesehen davon, dass hier javascript vorausgesetzt wird (was auf der seite ohnehin der fall ist) und dass diese vorgehensweise in relativ kleinen zeitzonen (nepal, aber auch indien) aufgrund der rundung auf volle stunden nicht funktioniert.
das sind im groben, meine beiden lösungsansätze um dem problem auf den leib zu rücken. doch selbst wenn ich mich für eines der beiden entscheide, habe ich immernoch folgende weitere bedenken:
was passiert, wenn ich mich gestern noch in der winterzeit befunden habe und einen artikel auf der seite verfasst habe. heute sehe ich mir den artikel an und es wird mir eine falsche erstellungszeit des artikels angezeigt. der timestamp stimmt (GMT), aber die anzeige nicht mehr. muss ich also zu jedem timestamp in der datenbank auch noch die zeitzone sowie einen flag 'sommerzeit' des erstellers mitspeichern!?
angenommen, das system soll mich über geburtstage anderer user informieren. dann darf es eigentlich nicht sein, dass mir für heute der geburtstag eines users angezeigt wird, der diesen eigentlich erst morgen in einer anderen zeitzone hat.
und ein ganz extremer fall: ich befinde mich heute in portugal und schreibe einen artikel. morgen bin ich in spanien. dann wird mir morgen angezeigt, ich hätte heute einen artikel eine stunde später angelegt, als ich es tatsächlich getan habe.. konfus.. aber dieser letzte fall ist zu vernachlässigen...
vorschläge, ideen?
ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt..
die problematik wurde hier im forum schon diskutiert. allerdings nicht so, dass sie mir etwas hilft..
ich möchte auf einer internationalen seite, bei der sich die nutzer registrieren müssen, gewährleisten, dass überall die richtige uhrzeit angezeigt wird. und zwar mit möglichst wenig input von seiten des users.
der timestamp soll, egal, in welchem land sich der user befindet in der greenwich time (winterzeit) gespeichert werden. das ist vorraussetzung und bekannt. dennoch sind damit leider noch nicht alle probleme aus dem weg geräumt..
man könnte eine datenbank aufbauen, in der gespeichert wird in welchem land und welcher region (da manche länder mehrere zeitronen haben) welche zeitverschiebung miteinzuberechnen ist. dazu kommt jedoch, dass unabhängig von den zeitzonen die meisten länder die sommerzeit nutzen, andere jedoch nicht. da ich land und region von meinen nutzern kenne wäre das die sauberste lösung. allerdings ist das aufbauen einer solchen datenbank und die umrechnung später in php leichter gesagt als getan. denn die sommerzeiten kommen nicht nur in unterschiedlichen ländern vor, sie fangen auch nicht in jedem land zum gleichen datum an und hören zum gleichen datum auf.
eine weitere möglichkeit wäre, per javascript die aktuelle zeit vom browser auszulesen und mit der zeit vom server zu vergleichen, die differenz auf volle stunden zu runden und das in der session als mit einzuberechnende differenz speichern. auch das ist eine einigermaßen annehmbare lösung. abgesehen davon, dass hier javascript vorausgesetzt wird (was auf der seite ohnehin der fall ist) und dass diese vorgehensweise in relativ kleinen zeitzonen (nepal, aber auch indien) aufgrund der rundung auf volle stunden nicht funktioniert.
das sind im groben, meine beiden lösungsansätze um dem problem auf den leib zu rücken. doch selbst wenn ich mich für eines der beiden entscheide, habe ich immernoch folgende weitere bedenken:
was passiert, wenn ich mich gestern noch in der winterzeit befunden habe und einen artikel auf der seite verfasst habe. heute sehe ich mir den artikel an und es wird mir eine falsche erstellungszeit des artikels angezeigt. der timestamp stimmt (GMT), aber die anzeige nicht mehr. muss ich also zu jedem timestamp in der datenbank auch noch die zeitzone sowie einen flag 'sommerzeit' des erstellers mitspeichern!?
angenommen, das system soll mich über geburtstage anderer user informieren. dann darf es eigentlich nicht sein, dass mir für heute der geburtstag eines users angezeigt wird, der diesen eigentlich erst morgen in einer anderen zeitzone hat.
und ein ganz extremer fall: ich befinde mich heute in portugal und schreibe einen artikel. morgen bin ich in spanien. dann wird mir morgen angezeigt, ich hätte heute einen artikel eine stunde später angelegt, als ich es tatsächlich getan habe.. konfus.. aber dieser letzte fall ist zu vernachlässigen...
vorschläge, ideen?
ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt..
Kommentar