Unterschied zwischen 2 datums berechnen

  • Antworten:9
christian rohrmann
  • Forum-Beiträge: 15

08.04.2012, 16:35:01 via Website

Hallo,

Ich bin gerade dabei eine Kleine App zu schreiben. Bei der muss ich den unterschied zwischen 2 Datums (start datum ist fest) in Jahren, monaten, Tage, Stunden, MInuten und Sekunden berechnen.

Bei der Stunden minuten und sekunden geh ich von Mitternacht aus ... also da ist es kleinste Problem.
Aba ich finde auf Google nichts wie ich den Unterschied zwischen 2 Datums berechnen kann.
Z.b 30.07.2010 bis Heute

Könnte Ihr mir da Tipps geben was für Methoden ich nehmen sollte bzw. Ich näher dran komm an ein Datum.

Gruß
Chris [|^_^|]

P.S. habe schonmal sowas ähnliche sin VBA geschrieben bin aba dann an den Schlatjahren und Tage berechnung gescheitert.

Antworten
christian rohrmann
  • Forum-Beiträge: 15

08.04.2012, 21:51:46 via Website

Also hab die Funktion java.util.date; gefunden xD
http://developer.android.com/reference/java/util/Date.html

Und hab deinen vorschalg umgesetzt und dann bekomm ich datums mit -1830 raus und über 68000 Tagen. Und irgendwie kann das vom 30.11.2011 nicht sein :D

Hab hier mal für das Jahr beispielweise den Code eingefügt xD

vllt sieht jemand direkt gleich wo mein fehler ist. Ergebnis "-1830"
1// Datums abziehen
2 Temp_date_berechnet = date_aktuell.getTime() - date_start.getTime();
3 date_berechnet.setTime(Temp_date_berechnet);
4 //jahre berechnen + setzten
5 Temp_Jahr= date_berechnet.getYear();
6 Jahr = (new Integer(Temp_Jahr).toString());
7 Jahr_set.setText(Jahr);

@Markus: oka englisch das googeln xD hätte ich selber drauf kommen können xD. WEnn ich sonst Programmiere mach ich das auch danke ;) vllt findest sich da noch was sinvolles drunter xD

Gruß Chris [|^_^|]

— geändert am 08.04.2012, 22:49:45

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

09.04.2012, 01:10:36 via App

Hey,
die Differenz ist die Differenz der beiden Daten in Millisekunden. Daraus kannst du kein Date Objekt generieren, da es ein Zeitraum und kein Zeitpunkt ist.
Du könntest jetzt per Integerdivision und Modulo die Millisekunden in Jahre, Monate, Tage, Stunden und (Milli)Sekunden runterbrechen.
Lg Ansgar

— geändert am 09.04.2012, 01:10:51

Antworten
christian rohrmann
  • Forum-Beiträge: 15

09.04.2012, 17:01:58 via Website

Also Für alle nachfolgenden.
Hat mich gestern bis um 3 Uhr nachts gekostet.
Und heute auch nochmal bis um 5 (aber mittags xD)

Man kann sich ein Calender Objekt erstellen. Und es dann durch diese Funktion jagen (Hab ich im Internet gefunden).
1public static long daysBetween(Calendar startDate, Calendar endDate) {
2 Calendar date1 = (Calendar) startDate.clone();
3 long daysBetween = 0;
4 while (date1.before(endDate)) {
5 date1.add(Calendar.DAY_OF_MONTH, 1);
6 daysBetween++;
7 }
8 return daysBetween;
9 }
dann erhält man die Tage als Zahl zurück die zwischen den 2 Daten liegen und kann.
die Zahl kann man dann per Teilen auf die Jahre und monate und tage aufteilen.

Wer Fragen zu der Funktion hat kann sich gerne melden versuche dann hilfestellung zu geben.

@Ansgar: Das mit den Millisekunden wurde mir dann zu komplizier tund waurde ab nem gewissen zeitpunkt auch ungenau.
Die Lösung ist zwa rnicht gerade einfacher hab sie aba funktioniert ;) :) aba danke für den Tipp ;)

Gruß
Chris [|^_^|]

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

09.04.2012, 18:36:21 via App

Hm,
ich verstehe nicht, wieso das ungenau sein soll.
Ich würde es einfach so ausrechnen:
1long daysBetween = millisBetween / (1000*60*60*24);
Wenn mich nicht alles täuscht, müsste es so gehen..
Lg Ansgar

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

09.04.2012, 19:27:56 via Website

Ansgar M
Hm,
ich verstehe nicht, wieso das ungenau sein soll.
Ich würde es einfach so ausrechnen:
1long daysBetween = millisBetween / (1000*60*60*24);
Wenn mich nicht alles täuscht, müsste es so gehen..
Lg Ansgar

Genau so würde ich das auch machen. Viel einfacher und schneller als extra einen Calendar zu bemühen.

Antworten
christian rohrmann
  • Forum-Beiträge: 15

09.04.2012, 21:36:23 via Website

Jaa schon xD

Musste aber noch die Schaltjahre beachten ... Okay man kann auch die Millis von einem Tag dann abziehen und dann kann ich auch soo die Schlatjahre beachten xD

es läuft jetzt soo und wenn ich es nächstemal sowas schreiben muss :) benutze ich gerne eure Funktionen.
bloß hab jetzt keine Lust das ding nach fast 24 Stunden dauer Programieren nochmal umzuschreiben :D

Aba danke ;) für die Tipps xD und vorallem auch die schnellen Antworten

Gruß
chris [|^_^|]

Antworten
Felix
  • Forum-Beiträge: 259

17.04.2012, 09:49:36 via Website

Tach!

Ansgar M
Ich würde es einfach so ausrechnen:
1long daysBetween = millisBetween / (1000*60*60*24);
Wenn mich nicht alles täuscht, müsste es so gehen..

... wenn man damit leben kann, dass zwei Tage im Jahr keine 24 Stunden lang sind.


Felix.

Antworten