Datum vergleichen - ohne Hilfsmittel

schnepfo

Mitglied
Ich verzweifle langsam, und hoffe ihr könnt mir helfen.

Ich möchte 2 Dati (YYYY:MM: DD:HH) mit Stundenangabe mit einer anderen solchen Angabe vergleichen und die Differenz ausrechnen.

Zuerst hatte ich keinen Plan wie das funktionieren soll, doch dann bin ich auf eine (Teil)lösung gestoßen. Ich habe so Jahre Monate Tage in Stunden umgerechnet, dann die beiden Werte subtrahiert. Alles schön und gut, jedoch habe ich als Annahme dass es keine Schaltjahre gibt und jedes Monat 30 Tage hat.

Um diese Annahme zu beseitigen fehlt mir jedoch jeglicher Ansatzpunkt.

Hier der Code den ich bis jetzt habe:

Java:
import java.io.*;

public class DateDifference {

	public static void main(String args[])
	{
		//2010:06:03:25
		int y1=2010,m1=6,d1=3,h1=25;
		//2011:12:31:24
		int y2=2011,m2=12,d2=31,h2=24;

		    float zahl1, zahl2;
		    
		    //Umrechnung in Stunden
		    zahl1 = y1*12*30*24 + m1*30*24 + d1*24 + h1;
		    zahl2 = y2*12*30*24 + m2*30*24 + d2*24 + h2;
		    
		    float zahl3 = zahl2 - zahl1;
		    
		    //Jahre ausrechnen
		    float diffyear = zahl3/(12*30*24);
		    //Wert vor dem Komma speichern
		    int dy = (int)diffyear;
		    //Differenz der Tage ausgeben
		    System.out.println(dy);
		    //Alles vor dem Komma wegrechnen
		    zahl3 = diffyear-dy;
		    //SO wie oben
		    float diffmonth = zahl3 * 12 * 30 * 24;
		    diffmonth = diffmonth / (30*24);
		    int dm = (int)diffmonth;
		    zahl3 = diffmonth - dm;
		    System.out.println(dm);
		    float diffday = zahl3 * 30 * 24;
		    diffday = diffday / 24;
		    int dd = (int)diffday;
		    zahl3 = diffday - dd;
		    System.out.println(dd);
		    //Ausgabe der Stunden
		    System.out.println((int)(zahl3*24));
		    
	}
}

Hier die Ausgabe:
1
6
27
23

Eigentlich wäre ja nur ein Tag unterschied. Iwie funktioniert nichtmal die Lösung. Habt ihr andere Ideen/Verbesserungsvorschläge?
 
Zuletzt bearbeitet von einem Moderator:

Michael...

Top Contributor
Alles schön und gut, jedoch habe ich als Annahme dass es keine Schaltjahre gibt und jedes Monat 30 Tage hat.

Um diese Annahme zu beseitigen fehlt mir jedoch jeglicher Ansatzpunkt.
Ich meine schon einmal von Schaltjahren und Monaten mit != 30 Tagen gehört zu haben ;-)
Java:
		//2010:06:03:25
		int y1=2010,m1=6,d1=3,h1=25;
... von Tagen mit 25 Stunden allerdings noch nicht.
Java:
		//2011:12:31:24
		int y2=2011,m2=12,d2=31,h2=24;
... 24 Stunden könnten noch gehen, aber mit dem Tag 31 widersprichst Du Deiner Annahme.

Ausserdem kannst Du Dir das Rechnen mit float und wieder zurückschieben in ein int sparen. Das kann man gleich direkt alles nur mit int berechnen.
 

WIaimy

Mitglied
Möchtest du es unbedingt mit einzelnen Variablen für Jahr/Monat/Tag machen?
Sonst schau dir mal die Klasse SimpleDateFormat an; vielleicht ist es sinnvoller diese zu verwenden. Die Strings kannst du dann vergleichen und Differenzen berechnen.
 

schnepfo

Mitglied
wlaimy: darf leider keine vordefinierten klassen verwenden

michael: die annahme dass ein monat 30 tage hat und dass es keine schaltjahre gibt soll nut vorläufig gelten; will es erstmal mit der annahme schaffen, und dann einen weg finden wie ich schaltjahre und die ungleichen tage von monaten miteinbeziehe. jedoch habe ich dafür nich keinerlei idee

das monat mit 25 tagen war ein versehen genauso wie das monat mit 31 tagen, hatte zuvor was getestet und das nichtmehr geändert
 

Michael...

Top Contributor
Wenn da ein Fehler passiert, dann bestimmt aufgrund des Hin und Hers zwischen int und float.
Wie bereits gesagt, kann man das alles nur mit int Werten berechnen, da Dich ja keine halben Jahre, Monate oder Tage interessieren.

Das einzige was man benötigt sind:
Code:
int/int
(Ganzzahldivision)
Code:
int%int
(Modulo zur Berechnung des Divisionsrests)

Wobei man letzteres nicht unbedingt benötigt.
 
Zuletzt bearbeitet:

Final_Striker

Top Contributor
Mal eine ganz einfach Frage: Was machst du, wenn du zwei Zeitpunkte miteinander vergleichen willst?
Du gehst doch nicht hin und rechnest alles zuerst in Minuten um oder? ;-)

Edit:

Achso, die Differenz.

Na dann bleibt dir nichts anderes übrig als selbst auszurechnen, wie viele Tage ein Monat hat und ob es sich bei einem Jahr um einen Schaltjahr handelt.
 
Zuletzt bearbeitet:

schnepfo

Mitglied
Michael: Wie würdest du das nut mit integer Variablen rechnen? Denn ich muss ja mal die ganze Summe durch einen Wert dividieren, da kommen dann meine Jahre raus. Dann muss ich mit dem Divisionsrest weiterrechnen. Dein TIpp mit dem modulo ist ganz gut, aber ohne dem gehts nicht?! Wüsste zumindest nicht wie du das meinst.

mfg
 

Michael...

Top Contributor
Genauso wie bei einer schriftlichen Division:
Java:
int a = 19, b= 8;
System.out.println((a%b) + " = " + (a - (a/b)*b));
Du versucht es in Deinem ursprünglichen Code ja genauso. Dur dass Du den Fehler machst mit Gleitkommazahlen zu rechnen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Dechasa Java 8 - Datum vergleichen Allgemeine Java-Themen 5
V Datum vergleichen Allgemeine Java-Themen 7
G Datum vergleichen Allgemeine Java-Themen 5
J [Aenderungszeit Datei] nur Datum vergleichen Allgemeine Java-Themen 3
S Build-Zeitpunt (Datum und Uhrzeit) irgendwie während der Laufzeit zugänglich machen..? Allgemeine Java-Themen 4
T Datum OHNE Uhrzeit Zeitzonen-übergreifend Allgemeine Java-Themen 4
W Datum anzeigen Allgemeine Java-Themen 10
MiMa Datum von zweistelliger Jahreszahl auf 4 Stellen aufrüsten? Allgemeine Java-Themen 4
MiMa Datum von String zu LocalDateTime Allgemeine Java-Themen 8
MiMa Wie sollte am besten ein Datum gespeichert werden? Allgemeine Java-Themen 8
Thallius Wie parse ich dieses Datum richtig? Allgemeine Java-Themen 5
G Excel Datum richtig auf der Konsole ausgeben Allgemeine Java-Themen 1
Hatsi09 Heutiges Datum Allgemeine Java-Themen 3
J Countdown für Datum und Uhrzeit Allgemeine Java-Themen 4
MiMa Das Datum Format ist mir unbekannt. Allgemeine Java-Themen 1
G Datum letzte 7 tage Allgemeine Java-Themen 6
A Datum und Uhrzeit in andere Zeitzone umrechnen Allgemeine Java-Themen 7
W Datum prüfen + zweistellig Allgemeine Java-Themen 11
M Datum Zeitdifferenz in Stunden umrechnen Allgemeine Java-Themen 4
E Datei anhand Datum identifizieren Allgemeine Java-Themen 3
M Datum umwandeln. Allgemeine Java-Themen 1
P Datum im gewünschten Bereich Allgemeine Java-Themen 21
N Zeitabstand zwischen 2 Daten(Mehrzahl von Datum) Allgemeine Java-Themen 3
Bluedaishi Dateien löschen die älter als das aktuelle Datum sind Allgemeine Java-Themen 9
Bluedaishi String Array mit Datum und Uhrzeit String sortieren Allgemeine Java-Themen 6
M Aktuelle Systemzeit und Datum abfragen Allgemeine Java-Themen 2
M datei aufruf datum auslesen Allgemeine Java-Themen 5
R Datum in Excel Tabelle eintragen Allgemeine Java-Themen 6
T auf Valides Datum prüfen Allgemeine Java-Themen 12
E Datum in Kw umrechen Allgemeine Java-Themen 3
E Datum in String Allgemeine Java-Themen 4
K Datum+Uhrzeit in Millisekunden (long) umwandeln Allgemeine Java-Themen 7
C jollyday: prüfen, ob Datum = Feiertag Allgemeine Java-Themen 8
F Tests mit dynamischem Datum Allgemeine Java-Themen 2
K Datum ermitteln Allgemeine Java-Themen 4
N Datum auf 00:00:00 Uhr normalisieren Allgemeine Java-Themen 3
A einzelne Tage als Datum ausgeben Allgemeine Java-Themen 6
T Aktuelles Datum auslesen Allgemeine Java-Themen 2
T Datum um ein Tag reduzieren Allgemeine Java-Themen 6
S log4j, Datum in Fileappendern formatieren Allgemeine Java-Themen 4
V Apache POI Excel Datum auslesen Allgemeine Java-Themen 6
C Datum in Excel auslesen Allgemeine Java-Themen 13
J Funktion zu einer Uhrzeit/datum ausführen Allgemeine Java-Themen 4
M Datum/Uhrzeit in ein Textfeld schreiben Allgemeine Java-Themen 28
L Gregorian Calender falsches Datum Allgemeine Java-Themen 2
0 Datum in Java Date umwandeln Allgemeine Java-Themen 4
S String-Array nach Datum sortieren Allgemeine Java-Themen 10
J Datum und Zeit Allgemeine Java-Themen 4
B Jfree Chart mit Datum und Uhrzeit Allgemeine Java-Themen 6
B Datum jetzt vor einer Woche Allgemeine Java-Themen 5
B warum zählt der Kalender das Datum nicht weiter Allgemeine Java-Themen 2
C Datum erstellen für SQL Format Date Allgemeine Java-Themen 3
C Datum zurücksetzen Allgemeine Java-Themen 9
A String zu Datum parsen - SimpleDateFormat Problem Allgemeine Java-Themen 8
G File.listFiles nach Datum sortiert ausgeben Allgemeine Java-Themen 1
A Datum parsen Allgemeine Java-Themen 9
C Datum addieren Allgemeine Java-Themen 2
G Timestamp aus Datum Allgemeine Java-Themen 4
B Herausfinden ob Datum existiert Allgemeine Java-Themen 2
H2SO3- string mithilfe von .matches als datum identifizieren Allgemeine Java-Themen 4
Z Datum ohne Format-Kenntnisse parsen Allgemeine Java-Themen 5
C ArrayList nach Datum sortieren Allgemeine Java-Themen 7
G Datum um 1 Monat verschoben Allgemeine Java-Themen 3
J Umwandeln von einem String in ein Datum Allgemeine Java-Themen 8
M Aus Anzahl Tagen Datum ermitteln Allgemeine Java-Themen 8
D Email versand bei einem festgelegten Datum Allgemeine Java-Themen 11
T Mit Datum und Zeit rechnen Allgemeine Java-Themen 8
D Datum korrekt erkennen Allgemeine Java-Themen 27
M Datum einlesen aus jTextField Allgemeine Java-Themen 2
M Zukünftiges Datum Allgemeine Java-Themen 3
G Listener auf aktuelles Datum / Uhrzeit Allgemeine Java-Themen 2
G JDK 1.5 und das Datum Allgemeine Java-Themen 7
V Datum parsen Allgemeine Java-Themen 6
V Datei kopieren und Datum erhalten Allgemeine Java-Themen 2
M Datei Handling mit Datum Allgemeine Java-Themen 2
M Datum in Tabelle formatiert ausgeben Allgemeine Java-Themen 3
S Datum einer Datei online? Allgemeine Java-Themen 6
G Anzahl an Tagen auf Datum addieren Allgemeine Java-Themen 4
G Datum im Format yyyy-mm-dd erstellen Allgemeine Java-Themen 1
P Datum in einer DateComboBox setzen Allgemeine Java-Themen 7
MQue Datum in ComboBox setzen Allgemeine Java-Themen 9
G Anzahl Tage in Datum umwandeln Allgemeine Java-Themen 13
M Datum nicht richtig geprüft, warum? Allgemeine Java-Themen 9
L datum nach dem kopiervorgang neu setzen? Allgemeine Java-Themen 2
R Datum in *.txt suchen und ersetzen Allgemeine Java-Themen 2
H Ein zufälliges Datum innerhalb eines Intervalles erzeugen Allgemeine Java-Themen 3
S POI Datum Allgemeine Java-Themen 2
G Datum einer Datei Allgemeine Java-Themen 8
J Datum auf Gültigkeit überprüfen Allgemeine Java-Themen 4
TheJavaKid Datum -> long Allgemeine Java-Themen 9
M Führende Null in einem Datum Allgemeine Java-Themen 3
C Datum-/Zeitdifferenz Allgemeine Java-Themen 5
F Datum gültig ? Allgemeine Java-Themen 9
G Datum konvertieren Allgemeine Java-Themen 14
G mysql datum umwandeln mittels jsp Allgemeine Java-Themen 10
F Datum mit anzahl tagen berechnen Allgemeine Java-Themen 3
F Datum in GregorianCalendar Allgemeine Java-Themen 3
G Datum Allgemeine Java-Themen 4
T Datum testen und Einsetzten Allgemeine Java-Themen 5
K Datum in ein anderes Format bringen Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben