1500 Minuten innerhalb von 24h ?!?!

Curry

Aktives Mitglied
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:

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!
 

Curry

Aktives Mitglied
Hmmm... Java ist gar nicht so doof ;-)

Gibt es eine Möglichkeit wie ich herausfinden kann, ob es in einer Differenzberechnung eine solche Zeitumstellung gibt? Zum Beispiel eine Funktion die mir true/false zurückgibt?
 

Marco13

Top Contributor
System.out.println(gcNext.get(GregorianCalendar.DST_OFFSET));
System.out.println(gcCurrent.get(GregorianCalendar.DST_OFFSET));
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Zufälligen String generieren und alle 5 Minuten ändern Allgemeine Java-Themen 2
S RS232 Probleme nach ca 20Langzeittest Minuten Allgemeine Java-Themen 9
P Dauer (Tage, Stunden, Minuten, Sekunden) berechnen Allgemeine Java-Themen 5
M Aktualisieren eines Chatprofils (Anzahl Minuten) Allgemeine Java-Themen 4
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
Zrebna Möglichkeit regelmäßige indentation mittels/innerhalb Stringbuilder Allgemeine Java-Themen 14
E Elemente innerhalb einer ArrayList vergleichen Allgemeine Java-Themen 33
ReinerCoder auf Klassen innerhalb eines package zugreifen Allgemeine Java-Themen 22
S Zugriff auf jUnit Test Suite Runner-Instanzen innerhalb von Test Classes Allgemeine Java-Themen 7
S Code 'innerhalb' des synchronen Bereichs einer BlockingQueue ausfuehren..? Allgemeine Java-Themen 7
M Nanosekunden-Pause innerhalb einen Thread-Loops Allgemeine Java-Themen 3
L Bilder innerhalb der JAR Datei Allgemeine Java-Themen 2
B Datei innerhalb des JARs von einer statischen Methode aufrufen Allgemeine Java-Themen 4
T Nur innerhalb des regex-Match ersetzen Allgemeine Java-Themen 9
A Navigation zu Files innerhalb jar Allgemeine Java-Themen 3
C Prüfen ob sich ein Punkt innerhalb einer Kugel befindet (Java3D,nicht-lineare GLS) Allgemeine Java-Themen 5
X Klassen innerhalb einer jar ersetzen Allgemeine Java-Themen 2
P Threads Thread innerhalb einer Klasse - ohne Extra Klasse Allgemeine Java-Themen 9
S groesstes Rechteck innerhalb eines Polygons/Shape finden..? Allgemeine Java-Themen 5
X Codeabarbeitung innerhalb des Hauptprogramms für bestimmte Zeit unterbrechen Allgemeine Java-Themen 2
M verschiedene Methonden innerhalb des gleichen Threads Allgemeine Java-Themen 7
J InvocationException im Thread (innerhalb von call() einer Callable Klasse) Allgemeine Java-Themen 2
J Directory/File Listing innerhalb JAR Allgemeine Java-Themen 2
P Serialisiertes Objekt innerhalb einer XML Node Allgemeine Java-Themen 25
M Innerhalb einer Jar in eine Txt schreiben Allgemeine Java-Themen 2
D Exe innerhalb einer Jar starten Allgemeine Java-Themen 10
U alle Dateien eines Ordners innerhalb einer JAR auflisten Allgemeine Java-Themen 6
N .jar innerhalb einer javaDatei starten Allgemeine Java-Themen 3
Luma Arbeitsverzeichnis innerhalb externen Bibliothek ändern Allgemeine Java-Themen 2
K MANIFEST.MF innerhalb einer JAR Datei lesen. Allgemeine Java-Themen 4
A Reflection - Variablen innerhalb einer Methode ermitteln Allgemeine Java-Themen 9
N Auf Bilder / Dateien innerhalb eines jar-Archives zugreifen Allgemeine Java-Themen 2
H Ein zufälliges Datum innerhalb eines Intervalles erzeugen Allgemeine Java-Themen 3
D Zahlen innerhalb eines Strings auslesen Allgemeine Java-Themen 3
D Suchfunktion innerhalb Jeditorpane Allgemeine Java-Themen 6
B java-version bestimmen innerhalb von Programm Allgemeine Java-Themen 4
A Verzeichnis auflisten - auch innerhalb eines Jars Allgemeine Java-Themen 6
M Datei innerhalb eines Zips ausführen? Allgemeine Java-Themen 4
P Perl innerhalb von Java ausführen Allgemeine Java-Themen 2
E Schaffe es einfach nicht daten innerhalb von 2 klassen zu üb Allgemeine Java-Themen 4
S konstruktor nur innerhalb der klasse aufrufbar Allgemeine Java-Themen 5

Ähnliche Java Themen


Oben