Uhr digital 03
    


Home

Ziffern Nr. 8  ScriptCode ZURÜCK SITEMAP  

 Digitale Uhr 03 für Zeitzone

Hier mein in der Testphase befindliches Beispiel einer digitalen Uhr für die Anzeige der Zeit einer bestimmte Zeitzone. Dazu muss der Offset zur Greenwich-Zeit bekannt sein.

Eingesetzt werden Mini-Ziffern mit den Abmessungen 11 x 14 Pixel. Weitere Images für digitale Ziffern finden sie auf der Seite Digitale Uhr 01.

New York befindet sich in der "Eastern Time", das bedeutet, die Uhrzeit liegt 6 Stunden hinter der MEZ. Ist es in Geilenkirchen z.B. 15.00 Uhr, so ist es in New York erst 9.00 Uhr morgens. Der Offset zur Greewich-Zeit beträgt für New York -5 Stunden.


Die dynamische, digitale Miniuhr zeigt die Ortszeit mit einer (in einer Variablen) festgelegten Zeitverschiebung von -5 Stunden zur Greenwich-Zeit an. Das entspricht der Ortszeit für New York.

Sommerzeit-Korrektur - Daylight-Saving Time

Die hier angewendete und weiter unten erklärte Lösung nimmt Greenwich-Zeit als Berechnungsbasis. Zuerst wird die lokale Zeit des Rechners (der irgendwo auf der Welt steht und die HTML-Seite anzeigt) und der Offset zur Greenwich-Zeit ermittelt. Erst dann wird der eingetragene Wert für die Zeitverschiebung zwischen Greenwich und Zielort berücksichtigt.

Gilt für den lokalen Rechner während der Sommermonate eine Sommerzeit, weicht das Ergebnis der Berechnung des Unterschiedes zwischen lokaler Rechnerzeit und Greenwich-Zeit um eine Stunde ab! Eine zusätzliche Korrektur von einer Stunde kann mit der Checkbox aktiviert werden.


   Erklärungsversuch:

Den Offset-Wert für die Zeitverschiebung in einer Variable festlegen. Ich nehme hier -5 als Zeitverschiebung von Greenwich zu New York

// Zeitoffset Irgendwo zu Greenwich
var Offset = -5;
anzeigen
Erst einmal zur Kontrolle den Stundenwert auf dem lokalen Rechner auslesen

// zur Kontrolle lokaler Stundenwert
var DatumZeitLokal = new Date();
var StdLokal = DatumZeitLokal.getHours();
anzeigen
Den Unterschied Lokal : Greenwich-Zeit ermitteln

// Unterschied lokale Zeit zu Greenwich
var Unterschied = DatumZeitLokal.getTimezoneOffset() / 60;
anzeigen
Die gesamte Zeitverschiebung "Lokal" zu "Irgendwo" aus dem Unterschied zur Greenwich-Zeit und dem eingetragenen Offset ermitteln

// Gesamtverschiebung zu Irgendwo (Unterschied + Offset)
var Verschiebung = Unterschied + Offset;
anzeigen
Weil man damit leichter rechnen kann, den absoluten Wert für den lokalen Datum-Zeit-Wert in Millisekunden ermitteln.

// Datum-Zeit-Wert absolut in Millisekunden
var AbsolutLokal = DatumZeitLokal.getTime();
anzeigen
Zu dem lokalen Datum-Zeit-Wert in Millisekunden die oben errechnete gesamte Zeitverschiebung hinzuzählen. Weil ich die gesamte Zeitverschiebung als Stundenwert ermittelt hatte, wird der hier eingesetzte Wert mit 3 600 000 multipliziert [ms / Std]

//  Datum-Zeit-Wert Irgendwo in Millisekunden
var AbsolutIrgendwo = AbsolutLokal + (Verschiebung * 60 * 60 *
1000);
anzeigen
Den nun ermittelten Wert kann man in eine Datumsvariable schreiben (setTime). Dieser neue Datum-Zeit-Wert kann ganz einfach im UTC-Format zur Kontrolle angezeigt werden.

// Werte für DatumZeit neu setzen
ZeitIrgendwo.setTime(AbsolutIrgendwo);
anzeigen
Mit dieser 'selbst gefüllten' Datums-Variablen 'ZeitIrgendwo' kann man nun alles 'anstellen', was JavaScript mit einer Datums-Variablen erlaubt. Also ist es auch möglich den Stundenwert auszulesen und für die Miniuhr einzusetzen.

// Stundenwert entnehmen
var StdIrgendwo = ZeitIrgendwo.getHours();
anzeigen
Wenn ich den selbst gewählten Offset mit -5 so gwählt hatte, dass die Zeit für New York dabei herauskommen muss, sollte der Stundenwert für New York angezeigt werden.

So weit so gut. Aber ...

Weil der Unterschied zwischen der lokalen Zeit und der Greenwich-Zeit unterschiedlich sein kann (Sommerzeit / Winterzeit), kann der gesamte Zeitunterschied zwischen dem lokalen Rechner und der Zeit 'Irgendwo' um eine Stunde verfälscht angezeigt werden.

Folglich muss entweder eine automatisierte oder manuelle Korrektur vorgesehen werden. Hier eine Option zur Korrektur mittels Checkbox (Auch die Demo funktioniert).


Sommerzeit-Korrektur - Daylight-Saving Time

// Sommerzeit Korrektur Kontrolle der checkbox
if (document.getElementById("Sommer").checked == true)
    {
    Verschiebung = Verschiebung + 1;
    }
anzeigen
Da die Check-Box ohnehin in der sekündlichen Schleife geprüft wird, erscheind das korrigierte Ergebnis im nächsten Durchlauf. Der um eine Stunde abweichende Wert wird gleich angezeigt.








NACH OBEN