2017-07-25 3 views
-1

Beim Drucken der Uhrzeit für die Uhren funktioniert ein ähnlicher Code und passt sich an die gewählte Zeitzone an, aber dies funktioniert nicht für das Drucken des Datums. Irgendeine Idee warum?Warum passt sich das Datum nicht an die von UTC festgelegte Zeit an?

Es wird nur die UTC-Standardzeit angezeigt.

<script> 
    function cetDT(){ 

var now = new Date(); 
var today = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds()); 

var day = today.getDate(); 
var month = today.getMonth(); 
var year = today.getFullYear(); 

var anHour = 1000 * 60 * 60; 
today = new Date(today.getTime() - anHour * -2); 

var hours = today.getHours(); 
var minutes = today.getMinutes(); 
var seconds = today.getSeconds(); 

if (hours >= 12){ 
meridiem = ""; 
} 
else { 
meridiem = ""; 
} 


if (minutes<10){ 
minutes = "0" + minutes; 
} 
else { 
minutes = minutes; 
} 

if (seconds<10){ 
seconds = "0" + seconds; 
} 
else { 
seconds = seconds; 
} 

document.getElementById("cetDT").innerHTML = (day + '/' + (parseFloat (month) + 1) + '/' + year); 

} 

cetDT(); 
</script> 
+1

Sie verwenden 'now.getUTCDate()' und 'now.getUTCHours()', die das aktuelle Datum und die aktuelle Uhrzeit in UTC erfassen. 'getDate',' getHours' etc. werden zeitzonenabhängige Zeiten erfassen. –

+0

Aber ich modifiziere es später auch mit "today = new Date (today.getTime() - anHour * -2);". Oder zumindest versuche ich .... Irgendwelche Vorschläge? – ebkod

+0

Es gibt eine Menge Dinge, die mit diesem Code nicht stimmen. Was versuchst du eigentlich zu erreichen? –

Antwort

1

Sie verwenden now.getUTCDate(), now.getUTCHours() und ähnliche, die das aktuelle Datum und die Uhrzeit in UTC greifen wird.

Um das lokale Äquivalent zu erhalten, suchen Sie nach now.getDate(), now.getHours() usw. Beachten Sie das Fehlen von "UTC" in den Namen.

Beachten Sie, dass, obwohl Sie Aktualisierung die today Variable mit today = new Date(today.getTime() - anHour * -2) sind, today früher mit den UTC-Zeiten paraphiert. Somit wird getTime() relativ zu UTC sein.

Um dies zu beheben, alles, was Sie tun müssen, um die Swap die UTC-Zeiten:

function cetDT() { 

    var now = new Date(); 
    var today = new Date(now.getFullYear(), now.getMonth(), now.getDate(), now.getHours(), now.getMinutes(), now.getSeconds()); 

    var day = today.getDate(); 
    var month = today.getMonth(); 
    var year = today.getFullYear(); 

    var anHour = 1000 * 60 * 60; 
    today = new Date(today.getTime() - anHour * -2); 

    var hours = today.getHours(); 
    var minutes = today.getMinutes(); 
    var seconds = today.getSeconds(); 

    if (hours >= 12) { 
    meridiem = ""; 
    } else { 
    meridiem = ""; 
    } 


    if (minutes < 10) { 
    minutes = "0" + minutes; 
    } else { 
    minutes = minutes; 
    } 

    if (seconds < 10) { 
    seconds = "0" + seconds; 
    } else { 
    seconds = seconds; 
    } 

    document.getElementById("cetDT").innerHTML = (day + '/' + (parseFloat(month) + 1) + '/' + year); 

} 

cetDT(); 

Beachten Sie, dass es auch mehrere Bits des Codes ist, die vollständig redundant, wie else { seconds = seconds; } sind. Vielleicht möchten Sie in Refactoring diesen Code suchen;)

Hoffe, das hilft! :)

+0

großen dank !! Ich habe es gelöst. – ebkod

+0

Also, beim Austauschen der UTC-Zeit muss ich eine Zeitzone angeben, wenn ich richtig bin? Es tut mir so leid, dass ich mich wie ein Anfänger gefühlt habe, aber ich habe an diesem Code gearbeitet und studiert und ich verstehe nicht, was ich ersetzen soll, um die Zeitzone zu ändern. – ebkod

+0

So schlecht wie die Frage ist, beachten Sie, dass es besser wäre, die UTC-basierten Funktionen anstelle der lokalzeitbasierten Funktionen zu verwenden. Sie haben recht, dass sie konsistent verwendet werden müssen, aber die lokalen Zeitfunktionen übernehmen immer das Verhalten der lokalen Zeitzone, einschließlich aller gültigen Sommerzeitregeln. Da das OP anscheinend um eine feste Anzahl von Stunden von UTC abweichen möchte, sollte man UTC als Basis verwenden. –

Verwandte Themen