Autor: BUILDER.COM
Es besteht kein Zweifel daran, dass mithilfe von JavaScript-Skripten die Ortszeit auf einer Webseite einfach angezeigt werden kann, indem direkt die Uhr des Benutzers angezeigt wird. Was aber, wenn Sie die Zeit in einer anderen Region anzeigen möchten – beispielsweise wenn sich Ihr Hauptsitz in einem anderen Land befindet und Sie die „Heimat“-Zeit anstelle der Ortszeit anzeigen möchten?
Dazu müssen verschiedene Zeitberechnungen durchgeführt werden, um die Ortszeit in die Zielzeit umzurechnen. In diesem Artikel wird erläutert, wie diese Berechnungen durchgeführt werden.
Schritt 1:
Der erste Schritt besteht darin, die Ortszeit zu ermitteln. In JavaScript kann dies sicherlich einfach durch die Initialisierung eines Data()-Objekts erfolgen.
// Date-Objekt für aktuellen Standort erstellen
d = new Date();
Durch Aufrufen der getTime()-Methode des Data()-Objekts können Sie die Anzahl der Millisekunden zwischen dem 1. Januar 1970 und der aktuellen Zeit anzeigen.
// seit 1. Januar 1970 in ms konvertieren
localTime = d.getTime();
Schritt 2:
Als nächstes ermitteln Sie den lokalen Zeitversatzwert über die Methode getTimezoneOffset() des Data()-Objekts. Standardmäßig zeigt diese Methode das Ergebnis des Zeitzonenversatzwerts in Minuten an, sodass dieser Wert in der früheren Berechnung in Millisekunden umgewandelt wird.
// lokalen UTC-Offset erhalten und in ms konvertieren
localOffset = d.getTimezoneOffset() * 60000;
Beachten Sie, dass der negative Rückgabewert der getTimezoneOffset()-Methode angibt, dass die lokale Zeit vor der Weltzeit (UTC) liegt, während der positive Rückgabewert Der Wert gibt die Ortszeit nach der koordinierten Weltzeit (UTC) an.
Hinweis: Falls Sie sich fragen, wie ich auf den Multiplikationsfaktor von 60.000 gekommen bin, denken Sie daran, dass 1.000 Millisekunden einer Sekunde und eine Minute 60 Sekunden entsprechen. Um Minuten in Millisekunden umzurechnen, multiplizieren Sie daher 60 mit 1.000, was 60.000 entspricht.
Der dritte Schritt
besteht darin, die Ortszeit und den lokalen Zeitzonenversatzwert zu addieren, um die aktuelle internationale Standardzeit (UTC) zu erhalten.
// UTC-Zeit in ms erhalten
utc = localTime + localOffset;
Hier enthält die Variable utc die aktuelle internationale Standardzeit (UTC). Diese Zeit wird jedoch als Anzahl der Millisekunden vom 1. Januar 1970 bis heute ausgedrückt. Lassen Sie es sich vorerst so ausdrücken, da noch einige Berechnungen durchgeführt werden müssen.
Der vierte Schritt besteht darin
, die Internationale Standardzeit (UTC) zu ermitteln, dann den stündlichen Offsetwert der Internationalen Standardzeit (UTC) der Zielstadt zu ermitteln, ihn in Millisekunden umzuwandeln und die Internationale Standardzeit (UTC) hinzuzufügen.
// UTC-Zeitversatz des Ziels ermitteln und hinzufügen
// zum Beispiel Bombay
//, der UTC + 5,5 Stunden
Offset = 5,5 ist;
bombay = utc + (3600000*Offset);
Falls Sie sich fragen, wie ich zur Multiplikation auf 3600000 gekommen bin Bedenken Sie, dass 1000 Millisekunden einer Sekunde und eine Stunde 3600 Sekunden entsprechen. Um Stunden in Millisekunden umzurechnen, multiplizieren Sie daher 3600 mit 1000, was 3600000 entspricht.
Zu diesem Zeitpunkt enthält die Variable bombay die Ortszeit in Mumbai, Indien. Diese Ortszeit wird als Anzahl der Millisekunden vom 1. Januar 1970 bis heute ausgedrückt. Offensichtlich macht das keinen Sinn, also müssen wir einige Berechnungen durchführen.
Der fünfte Schritt
besteht darin, ein neues Data()-Objekt zu initialisieren und die toLocalString()-Methode dieses Objekts aufzurufen. Wir konvertieren den im vorherigen Schritt berechneten Zeitwert in eine Datums-/Uhrzeitzeichenfolge, die jeder verstehen kann.
// msec-Wert in Datumszeichenfolge konvertieren
nd = new Date(bombay);
document.writeln("Bombay timeis
" + nd.toLocaleString() + "<br>");
Nachdem wir die obigen Schrittezusammengefasst
und verstanden haben, werfen wir noch einmal einen Blick auf dieses Skript (Listing A), das eine kompakte, benutzerdefinierte Funktion calcTime() erstellt, die alle Berechnungen durchführt und einen Zeitwert zurückgibt.
Liste A
<html>
<head>
<script language="JavaScript">
// Funktion zum Berechnen der Ortszeit
// in einer anderen Stadt
// unter Berücksichtigung des UTC-Offsets der Stadt
function calcTime(city, offset) {
// Date-Objekt erstellen für aktueller Standort
d = new Date();
// in ms konvertieren
// lokalen Zeitzonenversatz hinzufügen
// UTC-Zeit in ms abrufen
utc = d.getTime() + (d.getTimezoneOffset() * 60000);
// Neues Date-Objekt für eine andere Stadt erstellen
// unter Verwendung des bereitgestellten Offsets
nd = new Date(utc + (3600000*offset));
// Zeit als String zurückgeben
return „Die Ortszeit in „ + city + „ ist „ + nd.toLocaleString();
}
//
get Bombay time
warning(calcTime('Bombay', '+5.5'));
Zeitalarm für Singapur abrufen
(calcTime
(
'Singapur', '+8
'));
//
Zeitalarm für London abrufen
(calcTime('London', '+1'));
/body>
</html>
Hier akzeptiert die Funktion calcTime() einen Stadtnamen und seinen Offsetwert für die koordinierte Weltzeit (UTC) (in Stunden). Anschließend führt es intern alle oben beschriebenen Berechnungen durch und gibt eine Zeichenfolge zurück, die die Ortszeit für diese Stadt enthält.
Hier sind einige Beispiele der Ausgabe von Listing A.
Die Ortszeit in Mumbai ist Montag, 1. August 2005, 16:43:51 Uhr.
Ortszeit in Singapur ist Montag, 1. August 2005
, 19:13:51 Uhr. Ortszeit in London ist Montag, 1. August 2005, 12:13:51 Uhr
Wenn Sie sich das nächste Mal hinsetzen, um ein Zeitzonenskript für Ihre Webseite zu schreiben, wird Ihnen dieses Skript hoffentlich etwas Zeit sparen. Genießen! !