Hallo,
Ich möchte die Differenz von zwei Datumswerten berechnen. Nach der Suche im Forum habe ich das ganze mit GregorianCalendar und getTimeInMillis probiert:
Dabei ergeben sich aber folgende Probleme / Fragen:
1. wenn Start- und Enddatum am selben Tag sind dann ist die Differenz eine Stunde zu groß (was ich in Zeile 32 durch Abziehen einer Stunde 'korrigiert' habe. Warum ist das so?
2. wenn Start- und Enddatum an zwei aufeinander folgenden Tagen sind, so wird die Differenz so berechnet, als wären Start- und Enddatum am selben Tag:
Anscheinend habe ich irgendwo einen Denkfehler? Habt ihr eine Idee?
Der Hintergrund der ganzen Sache ist, dass die Daten für Start- und Endzeit mit getTimestamp aus einer Datenbank gelesen werden, die Differenz berechnet werden muss, und diese dann in der Datenbank abgespeichert werden soll.
Danke für alle Tips!
Ich möchte die Differenz von zwei Datumswerten berechnen. Nach der Suche im Forum habe ich das ganze mit GregorianCalendar und getTimeInMillis probiert:
Code:
import java.util.Calendar;
import java.util.GregorianCalendar;
public class ZeitDiff {
private static GregorianCalendar start;
private static GregorianCalendar ende;
private static GregorianCalendar diff = new GregorianCalendar();
public static void main(String[] args) {
// YY MM DD hh mm ss
start = new GregorianCalendar(2006, 1, 24, 22, 59, 00);
ende = new GregorianCalendar(2006, 1, 25, 23, 00, 00);
diff.setTimeInMillis(ende.getTimeInMillis() - start.getTimeInMillis());
System.out.println("START: " + start.get(Calendar.DAY_OF_MONTH) + "." +
start.get(Calendar.MONTH) + "." +
start.get(Calendar.YEAR) + " " +
start.get(Calendar.HOUR_OF_DAY) + ":" +
start.get(Calendar.MINUTE) + ":" +
start.get(Calendar.SECOND));
System.out.println("ENDE : " + ende.get(Calendar.DAY_OF_MONTH) + "." +
ende.get(Calendar.MONTH) + "." +
ende.get(Calendar.YEAR) + " " +
ende.get(Calendar.HOUR_OF_DAY) + ":" +
ende.get(Calendar.MINUTE) + ":" +
ende.get(Calendar.SECOND));
System.out.println("DIFF :\t\t " + (diff.get(Calendar.HOUR_OF_DAY)-1) + ":" +
diff.get(Calendar.MINUTE) + ":" +
diff.get(Calendar.SECOND));
}
}
Dabei ergeben sich aber folgende Probleme / Fragen:
1. wenn Start- und Enddatum am selben Tag sind dann ist die Differenz eine Stunde zu groß (was ich in Zeile 32 durch Abziehen einer Stunde 'korrigiert' habe. Warum ist das so?
2. wenn Start- und Enddatum an zwei aufeinander folgenden Tagen sind, so wird die Differenz so berechnet, als wären Start- und Enddatum am selben Tag:
Code:
START: 24.1.2006 22:59:0
ENDE : 25.1.2006 23:0:0
DIFF : 0:1:0
Anscheinend habe ich irgendwo einen Denkfehler? Habt ihr eine Idee?
Der Hintergrund der ganzen Sache ist, dass die Daten für Start- und Endzeit mit getTimestamp aus einer Datenbank gelesen werden, die Differenz berechnet werden muss, und diese dann in der Datenbank abgespeichert werden soll.
Danke für alle Tips!