2016-07-01 17 views
0

Ich versuche, den Unterschied betweent zweimal zu berechnen, wie 10.54 und 09.00 Uhr (erwartete Differenz beträgt 1 Stunde 54 Minuten):JavaScript Differenz zwischen zwei Daten, um eine Stunde falsch ist

Date.prototype.diffTime = function(date){ 
    return new Date(this-date); 
} 

Aber das gibt eine Stunde mehr als ich erwartet:

Thu Jan 01 1970 10:54:00 GMT+0100 (CET) 
Thu Jan 01 1970 09:00:00 GMT+0100 (CET) 
Thu Jan 01 1970 02:54:00 GMT+0100 (CET) 

Also warum fügt es eine Stunde? Die Eingabezeiten sind korrekt. Wenn ich getTime() verwende, bekomme ich 1,9 Stunden (dieses Datum/1000/60/60), was auch korrekt ist.

Vielen Dank für Ihre Kommentare. Ich schrieb nun eine einfachere Funktion, die das tut, was ich brauche:

function getTimeHHMI(date){ 
    var minutes = date/1000/60; 
    var hours = Math.floor(minutes/60); 
    minutes -= hours*60; 

    return [hours, minutes].join(':'); // returns 1:54 
} 

Antwort

1

sein, wenn Sie passieren this-date bis new Date wird der Wert als Unix-Timestamp interpretiert, der 1:54 Uhr darstellt. 1:54 Uhr in GMT + 0 ist dasselbe wie 02:54 Uhr in GMT + 1. I.e. Der Browser konvertiert den Unix-Zeitstempel in Ihre lokale Zeit.

Die Umwandlung der Dauer in einen Datumswert ist nicht sinnvoll, da die Dauer unabhängig von den Zeitzonen ist.

1

this-Datum zurückgibt Millisekunden .Wenn Sie stammen aus dem Unterschied konstruieren, wäre es zeitgemäß wie lange 1970

Date.prototype.diffTime = function(date){ 
    return (this-date)/1000/60/60; 
} 
+0

Entschuldigung, ich kann beide Antworten nicht akzeptieren :) – Kugel

Verwandte Themen