2 Stimmen

Wie berechnet man am besten die Differenz zwischen zwei Zeiten in Java?

Ich habe zwei Zeiten in einem Array, und ich muss die Differenz zwischen diesen beiden Zeiten berechnen. Ich habe die Stunden in Minuten umgewandelt, dann addiert die restlichen Minuten. So erhalte ich die Gesamtminuten. Nachdem ich dies für beide Zeiten getan habe, habe ich einfach eine Gesamtminute von der anderen abgezogen. Dann habe ich sie wieder in Stunden und Minuten umgerechnet.

double no1 = Double.parseDouble(array[i][4]);
int time1_calc = (int) (no1 * 100); //Remove decimal point
int time1hours = (time1_calc) / 100;
int time1mins = (time1_calc) % 100;
int time1HM = time1hours*60;
int time1_total = time1HM + time1mins;

Der obige Code wird zum zweiten Mal verwendet, dann verwende ich:

int total = time2_total - time1_total;

Alle Berechnungen scheinen zu funktionieren, aber die Differenz zwischen 10.18 und 09.35 Uhr beträgt 1 Stunde 23 Minuten oder 83 Minuten insgesamt. Mein Programm scheint 43 Minuten anzuzeigen.

Ich habe andere Möglichkeiten ausprobiert, aber ich kann es immer noch nicht zum Laufen bringen.

4voto

Joachim Sauer Punkte 290477

Verwenden Sie eine DateFormat (wahrscheinlich SimpleDateFormat ) Objekt, um Ihren String zu analysieren, und versuchen Sie nicht, mit parseDouble() (das ist für das Parsing einer einzelnen Zahl, was eine Zeit nicht ist).

2voto

kgiannakakis Punkte 100768

Werfen Sie einen Blick auf die Joda Bibliothek.

Wenn Sie es selbst machen wollen, dann sieht Ihr Code für mich korrekt aus.

2voto

Rob Grant Punkte 7158
int time1mins = (time1_calc) % 100;

Minuten sind nicht der Rest von Stunden geteilt durch 100, sondern durch 60. Ist es das, was dieser Teil des Codes tun soll?

Außerdem ist es vielleicht besser, wenn Sie einfach eine Kalender Objekt.

1voto

srinannapa Punkte 2965
Calendar time1 =  Calendar.getInstance();
// assign time1 date from your array

Calendar time2 =  Calendar.getInstance();
// assign time2 date from your array

long diff = time1.getTimeInMillis() - time2.getTimeInMillis();

0voto

dev ray Punkte 455

Verwenden Sie das Datumsobjekt. Verwenden Sie dann seine getTime-Methode. Sie liefert Ihnen die Zeit in Millisekunden (long). Subtrahieren Sie dann die Zeiten und wandeln Sie sie in Minuten und Stunden um.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X