NEWS
[GELÖST] Zeitdifferenz berechnen
-
Kann mir wer im Verständnis helfen?
in folgendem Script errechne ich die Differenzen zwischen zwei Zeiten ... etwa 01:00 - 06:00 oder auch über Mitternacht also 23:00 - 3:00. Soweit so gut ...
Wenn ich aber das Ergebnis mit formatDate formatiere oder mit getHours oder getMinutes berechne muss ich die Differenzzeit um genau eine Stunde vermindern damit es stimmt ... warum ?Besten Dank
// berechnet und formatiert Differenz zwischen Zeiten // Zeiten immer in SS:mm oder SS angeben, Sekunden werden nicht berechnet // mögliche Formate: SS:mm (default), SS, mm, Min (Differenz in Minuten) { var myresult; DifferenzZeit = getDateObject(Zeit_bis).getTime() - getDateObject(Zeit_ab).getTime(); if (isNaN(DifferenzZeit)) console.error('Berechnung der Zeitdifferenz nicht möglich. Angabe der Zeiten korrekt?'); // Wenn Zeit bis kleiner Zeit ab ist // geht über Mitternacht if (DifferenzZeit < 0) DifferenzZeit = DifferenzZeit + 86400000; switch (Format) { case 'SS:mm': myresult = formatDate(getDateObject(DifferenzZeit - 3600000), "hh:mm"); break case 'SS': myresult = getDateObject(DifferenzZeit - 3600000).getHours(); break case 'mm': myresult = (getDateObject(DifferenzZeit - 3600000).getMinutes()); break case 'Min': myresult = DifferenzZeit / 60000; break case 'MS': myresult = DifferenzZeit; break default: myresult = formatDate(getDateObject(DifferenzZeit - 3600000), "hh:mm"); break } return myresult; }
-
könnte das an der Sommerzeit liegen?
-
@peterk34 sagte: Wenn ich aber das Ergebnis mit formatDate formatiere
... dann funktioniert es, denn formatDate() berücksichtig, dass kleine Werte (vor 01.01.2000) Differenzen sind. Bei großen Werten wird die Zeitzone berücksichtigt:
-
cool
var diff = (getDateObject(end).getTime()-getDateObject(start).getTime()); log (formatDate(diff,'hh:mm')); log (formatDate(getDateObject(diff),'hh:mm'));
ergibt ...
macht mans so wie du, passts ...
macht mans im blockly wirds wie das zweite Ergebnis -
@peterk34 sagte: macht mans im blockly wirds wie das zweite Ergebnis
Ja, das ist bekannt.
-
habs jetzt so umgebaut da bei getMinutes() gehts ohne das getDateObject nicht ..
DifferenzZeit = getDateObject(Zeit_bis).getTime() - getDateObject(Zeit_ab).getTime(); if (DifferenzZeit < 0) DifferenzZeit = DifferenzZeit + 86400000; if (new Date().getTimezoneOffset() == -120) sommerzeit = 3600000; else sommerzeit = 0; switch (Format) { case 'SS:mm': myresult = formatDate(getDateObject(DifferenzZeit - sommerzeit), "hh:mm"); break case 'SS': myresult = getDateObject(DifferenzZeit - sommerzeit).getHours(); break case 'mm': myresult = getDateObject(DifferenzZeit - sommerzeit).getMinutes();
-
Dankeschööön