• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[SCRIPTSUCHE] Weltzeituhr?

Hamster_Max

New member
Hallo!

Ich hoffe dass mir hier jemand weiterhelfen kann.
Ich habe auf meiner Website max.six eine Weltzeituhr eingerichtet. In der Zeitzone UTC+1 sind alle Zeiten korrekt. Fahre ich nun in die USA, stimmen die Zeiten nicht mehr, da mein Script die lokale Zeitzone abruft. Mein Script bis jetzt: Berlin (Die Uhr ist weiß, daher eigentlich nicht zu sehen. Zur Not einfach grau machen oder so..)

Kann mir von euch jemand zeigen, was ich genau tun muss, damit, egal von wo, immer die richtige Uhrzeit angezeigt wird?

Ich danke schon mal im Vorraus! :)
 
Wenn du in deinem Code immer mit den UTC-Funktionen des Date-Objektes arbeitest (und die Systemzeit richtig eingestellt ist), sollte dein Skript immer funktionieren. Egal in welcher Zeitzone sich der Client befindet.

PS: Dass die Sekundenzeiger nicht synchron sind, sieht nicht besonders gut aus.
 
Okay, also ich bin noch Neuling. Wie genau muss ich das machen?

Und ja ich weiß, also bei mir sind sie manchmal synchron, ich weiß aber noch nicht wie ich das am besten lösen kann...
 
Wenn du in deinem Code immer mit den UTC-Funktionen des Date-Objektes arbeitest (und die Systemzeit richtig eingestellt ist), sollte dein Skript immer funktionieren. Egal in welcher Zeitzone sich der Client befindet.
aber nur wenn seine lokale zeitzone richtig gesetzt ist. soweit ich ihn verstanden habe, will er aber seinen rechner mit monitor, drucker, tastatur und maus ins flugzeug packen, in den usa anschließen und es soll stimmen. ohne die zeitzohne zu ändern. das macht man ja nicht extra für den wochenendausflug.
 
Ja nicht unbedingt. Also ich will eben, das auch ein User der USA die richtige Uhrzeit sieht. Eben nicht verschoben. Sie ist jetzt halt auf die deutsche Zeit angepasst.
 
nicht unbedingt heißt jetzt was?
* fall 1 ist der von mir beschriebene, der deinem "Fahre ich nun in die USA" entspricht ohne die zeitzone zu ändern
* fall 2 ist "Fahre ich nun in die USA" und ändere die eingestellte zeitzone
* fall 3 ist ich lebe in den USA und habe auch die richtige zeitzone eingestellt
(* fall 4 ist ich lebe in den USA und habe nicht die richtige zeitzone eingestellt)
 
2 und 3 natürlich. Ein Amerikaner zum Beispiel lebt ja nicht in unserer Zeitzone. Deshalb würde mit meinem aktuellen Script die Uhrzeit der angegebenen Orte verfälscht werden.
 
Ich möchte von überall aus die Ortszeit von Berlin (LA, NY, Bangkok, Sydney...) anzeigen.
naja, das wird dann schwieriger
den offset deiner lokalen zeit bekommst du ja raus
den offset zur standard-zeitzone der einzelnen orte auch
jetzt musst du nur noch wissen, ob dort zur zeit sommerzeit ist, das geht nicht so ohne weiteres.
am einfachsten ist, du suchst dir einmalig raus, wann diese in den einzelnen orten beginnt und endet und aktualisierst das ab und an
die offsets deiner lokalen und der der einzelnen orte verrechnest du, setzt diesen offset bei deiner zeit, siehst JETZT in die tabelle, ob sommerzeit ist, passt deinen offset entsprechend nochmal an oder auch nicht und schon hast du die zeit des ortes.
 
Etwas einfacher dürfte es werden, wenn du dir den Zeitzonenoffset zur UTC-Zeit dynamisch als Javascript von deinem Server liefern lässt. Das php-script ist ein Klacks (hatte grad mal Lust dazu):

timezoneoffset.php
PHP:
<?php
header('Content-Type: application/javascript');
$tz = array(
  'BE' => 'Europe/Berlin',
  'LE' => 'America/Los_Angeles',
  'NY' => 'America/New_York',
  'BK' => 'Asia/Bangkok',
  'SY' => 'Australia/Sydney',
);

$tzOffsets = array();
foreach($tz as $key => $curTz){
  $z = new DateTimeZone($curTz);
  $tzOffsets[$key] = date_create(null, $z)->getOffset()/(60*60);
}
$js = "var tzOffsets = ".json_encode($tzOffsets).";\r\n";
echo $js;

Dies holst du dir wie ein normales externes Javascript in deine Seite.

Was da reinkommt sieht aktuell so aus:
Code:
var tzOffsets = {"BE":2,"LE":-7,"NY":-4,"BK":7,"SY":11};

LG jspit
 
Wie du das am besten einbaust?
Du suchst dir zuerst für das Skript ein passendes Verzeichnis auf deinem Server. Die Erreichbarkeit und Funktion kannst du dann testen, indem du das Skript dann über die Browserzeile aufrufst.

Das Einbinden des Skriptes in deine Seite erfolgt über einen normalen script-tag

Code:
<script src="http://.../timezoneoffset.php" type="text/javascript"></script>

Einfacher geht es nicht mehr. Als Hilfe hier noch ein paar Zeilen die zeigen, wie du das nutzt:
Code:
//Aktuelle Zeit New York
  var date = new Date();
  var offset = tzOffsets.NY;
  var dateNY = DateAdd(date,offset,"h");
  alert( dateNY.toGMTString());

Einbauen in deine Uhr musst du das schon selbst. Du musst dort immer auf auf UTC Bezug nehmen, also z.B. getUTCHours() zum holen der Stunde nehmen. DateAdd bekommst du hier.
Das Vorgehen ist im Grunde nicht viel anders, wie es auch tsseh schon beschrieben hat.

Viel Erfolg

@jspit: das müsste man sich aber des öfteren vom Server holen, da man sonst den Übergang zwischen STD und DST verpasswen könnte.

Ja, für die, welche stundenlang auf dieselbe Seite starren. Dafür würde sich dann Ajax oder JSONP anbieten. Aber mal ehrlich, wer ist schon länger als ein paar Minuten auf einer Startseite.
 
Zuletzt bearbeitet:
Zurück
Oben