2016-11-29 2 views
1

Ich habe eine Uhr wie folgt:Javascript Uhr mit variabler Zeitzone

const timeContainer = document.querySelector('.timeContainer'); 

var showTime = (timeZone) => { 
    let utcTime = new Date().toUTCString(); 
    //need to subtract/add timezone from utcTime 
    //need to remove everything except for time e.g. 00:22:22 
    return utcTime; 
}; 

setInterval(() => { 
    timeContainer.innerHTML = showTime('-8'); 
}, 1000); 

Was mir GMT Zeit wie diese gibt:

Tue, 29 Nov 2016 00:35:54 GMT 

.. das ist, was ich will! Aber ich sage, dass ich die Zeit in Hongkong bekommen möchte, und auch nur die numerische Zeit, keine der Informationen über Datum und Zeitzone.

Ich muß grundsätzlich auf:

a) Subtraktions/füge eine variable ganze Zahl von timeZoneutcTime

b) gesamten Text im Ausgang entfernen, außer daß die Zeit, z.B. utcTime nur die Ausgänge als 00:22:22

Ich brauche im Grunde um einen Takt zu erzeugen, basierend auf welche timeZone integer I showTime laufe mit, zum Beispiel:

showTime(-5); 
//returns time in EST timezone 
showTime(-6); 
//returns time in CST timezone 

usw. Gibt es eine Möglichkeit, dies .toUTCString() mit zu tun? Oder gibt es eine bessere Methode?

Hier ist ein jsFiddle mit meinem Code.

+0

Ich schlage vor, dass Sie prüfen, mit [Moment-Zeitzone] (http://momentjs.com/timezone). – choz

+0

Was ist Ihre Frage oder Problem? – Tigger

+0

meine Frage für Klarheit geklärt – shanling

Antwort

1

Holen Sie sich den Zeitstempel, der die Zeit seit der Epoche in UTC ist, versetzt um die gewünschte Zeitzone und bauen Sie die Zeichenkette auf.

const timeContainer = document.querySelector('.timeContainer'); 

var dateToTimeString = (dt) => { 
    let hh = ('0' + dt.getUTCHours()).slice(-2); 
    let mm = ('0' + dt.getUTCMinutes()).slice(-2); 
    let ss = ('0' + dt.getUTCSeconds()).slice(-2); 
    return hh + ':' + mm + ':' + ss; 
} 

var showTime = (timeZone) => { 
    // convert timezone in hours to milliseconds 
    let tzTime = new Date(Date.now() + timeZone * 3600000); 
    return dateToTimeString(tzTime); 
}; 

setInterval(() => { 
    timeContainer.innerHTML = showTime('-8'); 
}, 1000); 

jsFiddle

die Ausgabe

17:00:00 
+0

Ah, tut mir leid, wenn es nicht klar genug war. Ich möchte in der Lage sein, jede Art von Zeitzonenmodifikator zu setzen und einfach die Zeit an diesem Ort zu generieren. zum Beispiel, wenn ich showTime (-5) laufen würde, würde ich EST, showTime (-6) CST usw. bekommen. – shanling

+0

funktioniert wie ein Charme! vielen Dank :-) – shanling

0

Wenn Sie die Zeit im Format "11/29/2016" möchten, können Sie toLocaleDateString() anstelle von toUTCString() verwenden.

Wenn Sie die Zeit im Format "Tue Nov 29 2016" möchten, können Sie toDateString() anstelle von toUTCString() verwenden.