Hallo!
Ich habe ein Programm geschrieben das zwischen zwei Zeitpunkten, welche jeweils durch Datum und Uhrzeit definiert sind, die Anzahl der Minuten berechnet.
Eigentlich funktioniert das Programm, aber uneigentlich gibt es auch komische Fehler. So berechnet das Programm beispielsweise zischen "2010.10.30 - 11:56" und "2010.10.31 - 11:56" 1500 Minuten als Differenz. Es sollten aber nur 1440 Minuten sein! Was ist das Problem?
Um das zu demonstrieren habe ich den Code zu einem kurzen Testprogramm reduziert:
Die Ausgabe ist folgende:
Ich würde mich sehr über eure Hilfe freuen!
Ich habe ein Programm geschrieben das zwischen zwei Zeitpunkten, welche jeweils durch Datum und Uhrzeit definiert sind, die Anzahl der Minuten berechnet.
Eigentlich funktioniert das Programm, aber uneigentlich gibt es auch komische Fehler. So berechnet das Programm beispielsweise zischen "2010.10.30 - 11:56" und "2010.10.31 - 11:56" 1500 Minuten als Differenz. Es sollten aber nur 1440 Minuten sein! Was ist das Problem?
Um das zu demonstrieren habe ich den Code zu einem kurzen Testprogramm reduziert:
Java:
import java.text.SimpleDateFormat;
import java.util.*;
public class Test {
ArrayList<String> current = new ArrayList<String>();
ArrayList<String> next = new ArrayList<String>();
public Test() {
// Daten generieren
current.add("20101028_1156");
next.add("20101029_1156");
current.add("20101029_1156");
next.add("20101030_1156");
current.add("20101030_1156");
next.add("20101031_1156");
current.add("20101031_1156");
next.add("20101101_1156");
// Datenverarbeitung
SimpleDateFormat sdf_date = new SimpleDateFormat("yyyy.MM.dd");
SimpleDateFormat sdf_time = new SimpleDateFormat("HH:mm");
for(int i = 0; i < current.size(); i++) {
String[] currentString = current.get(i).split("_");
String[] nextString = next.get(i).split("_");
GregorianCalendar gcCurrent = new GregorianCalendar(
Integer.parseInt( currentString[0].substring(0, 4).trim() ),
Integer.parseInt( currentString[0].substring(4, 6).trim() ) - 1,
Integer.parseInt( currentString[0].substring(6, 8).trim() ),
Integer.parseInt( currentString[1].substring(0, 2).trim() ),
Integer.parseInt( currentString[1].substring(2, 4).trim() )
);
GregorianCalendar gcNext = new GregorianCalendar(
Integer.parseInt( nextString[0].substring(0, 4).trim() ),
Integer.parseInt( nextString[0].substring(4, 6).trim() ) - 1,
Integer.parseInt( nextString[0].substring(6, 8).trim() ),
Integer.parseInt( nextString[1].substring(0, 2).trim() ),
Integer.parseInt( nextString[1].substring(2, 4).trim() )
);
System.out.println("1. Zeit = " + sdf_date.format(gcCurrent.getTime()) + " - " + sdf_time.format(gcCurrent.getTime()));
System.out.println("2. Zeit = " + sdf_date.format(gcNext.getTime()) + " - " + sdf_time.format(gcNext.getTime()));
// Berechnung der Differenz in Minuten
int diff = (int) (gcNext.getTimeInMillis() - gcCurrent.getTimeInMillis()) / 1000 / 60;
System.out.println("Differenz in Minuten = " + diff + "\r\n");
}
}
public static void main(String[] args) {
Test test = new Test();
}
}
Die Ausgabe ist folgende:
Code:
1. Zeit = 2010.10.28 - 11:56
2. Zeit = 2010.10.29 - 11:56
Differenz in Minuten = 1440
1. Zeit = 2010.10.29 - 11:56
2. Zeit = 2010.10.30 - 11:56
Differenz in Minuten = 1440
1. Zeit = 2010.10.30 - 11:56
2. Zeit = 2010.10.31 - 11:56
Differenz in Minuten = 1500
1. Zeit = 2010.10.31 - 11:56
2. Zeit = 2010.11.01 - 11:56
Differenz in Minuten = 1440
Ich würde mich sehr über eure Hilfe freuen!