[Joda Time] Jahr, Tage, Stunden... vergangen seit Zeitpunkt

pallidotcom

Mitglied
Hallo liebe Community,

ich würde gerne berechnen wieviele Jahre, Tage, Stunden, Minuten und Sekunden seit einem bestimmten Zeitpunkt vergangen sind. Ich habe nun die Joda Time Library entdeckt und es versucht:

Java:
String dateTime = "01/03/2000 17:00:00";
DateTimeZone.setDefault(DateTimeZone.forID("Europe/Berlin"));
DateTimeFormatter dtf = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss");
DateTime startDate = dtf.parseDateTime(dateTime);
DateTime currentDate = new DateTime();

Period period = new Period(startDate, currentDate);
			
mYears = period.getYears();
mDays = period.getDays();
mHours = period.getHours();
mMinutes = period.getMinutes();
mSeconds = period.getSeconds();

Bis auf die Tage wird auch alles korrekt angezeigt und ich gehe davon aus, dass die Tage fehlerhaft sind, da ich keine Monate und Wochen ausgebe. Kann ich der Joda Period irgendwie beibringen, die Monate und Wochen mit auf die Tage zu zählen?

Wäre wirklich schön, wenn einer von euch einen Ansatz hat.
 

pallidotcom

Mitglied
Wahrscheinlich sehe ich den Wald vor lauter Bäumen nicht mehr.

Das Beispiel berechnet mir den Unterschied in Tagen oder in Monaten. Was ich brauche ist einen Unterschied der beiden Zeitpunkte in ein lesbares Format (Jahre, Tage, Stunden, Minuten) zu bringen.
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

ich verstehe jetzt Dein Problem nicht ganz!

Du holst Dir doch in den Zeilen 10 - 14 die entsprechenden Werte ....
Daraus kannst Du Dir doch locker wieder einen String (oder was auch immer ) basteln !
Mach' es entweder einzeln mit "toString" oder mit "String.format(...)" :bahnhof:

Gruß
Klaus
 
Zuletzt bearbeitet:

pallidotcom

Mitglied
Das Problem ist, dass bei period.getDays(); nicht die Wochen und Monate berücksichtigt werden sondern nur die Differenz zu dem Tag an dem das Startdatum war.

Beispiel: Wenn das Startdatum an einem Montag war und wir heute Donnerstag haben liefert period.getDays() = 3.

Fazit: Wenn ich die Differenz der beiden Zeitpunkte in folgendem Format darstellen wollen würde:

Jahre, Monate, Wochen, Tage, Stunden, Minuten, würde es wunderbar funktionieren. Ich möchte jedoch die Monate und Wochen bei den Tagen berücksichtigen.
 

VfL_Freak

Top Contributor
Moin,

Fazit: Wenn ich die Differenz der beiden Zeitpunkte in folgendem Format darstellen wollen würde:
Jahre, Monate, Wochen, Tage, Stunden, Minuten, würde es wunderbar funktionieren.
Ich möchte jedoch die Monate und Wochen bei den Tagen berücksichtigen.
Bitte was ?? :bahnhof:
Kannst Du bitte vernünftig erklären, was genau Du erwartest und was Du stattdessen bekommst?
Am besten an konkreten Beispiel ..... :noe:

Gruß
Klaus
 
Zuletzt bearbeitet:

pallidotcom

Mitglied
Java:
String dateTime = "07/24/1963 17:00:00";
DateTimeZone.setDefault(DateTimeZone.forID("Europe/Berlin"));
DateTimeFormatter dtf = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss");
DateTime startDate = dtf.parseDateTime(dateTime);
DateTime currentDate = new DateTime(DateTimeZone.forID("Europe/Berlin"));

Period period = new Period(startDate, currentDate);

int mYears = period.getYears();
int mDays = period.getDays();
int mHours = period.getHours();
int mMinutes = period.getMinutes();
int mSeconds = period.getSeconds();

System.out.println("Jahre: " + String.valueOf(mYears));             // Ausgabe: 51
System.out.println("Tage: " + String.valueOf(mDays));               // Ausgabe: 3 <--- FALSCH!!! 10 Tage!
System.out.println("Stunden: " + String.valueOf(mHours));           // Ausgabe: 21
System.out.println("Minuten: " + String.valueOf(mMinutes));         // Ausgabe: 53
System.out.println("Sekunden: " + String.valueOf(mSeconds));        // Sekunden: 10
 

VfL_Freak

Top Contributor
hmm, jetzt bin noch mehr verwirrt :bahnhof:

Ok, die Ausgabe ist seltsam ... aber warum 10 ???

Das sollten doch 51 Jahre, 52 Tage, nn Stunden sein, oder ?
Von mir aus auch 51 Jahre, 1 Monat, 22 Tage, nn Stunden ....

Allerdings habe ich Period auch noch nie nutzen müssen, so dass mir auch noch vollkommen klar ist, wieso '3' zurückgegeben wird. Hier noch mal ein weiter Link:
GC: Period - org.joda.time.Period (.java) - GrepCode Class Source

EDIT:
hier noch ein weiterer Link mit interessanten beispieln :
Period and Duration (The Java™ Tutorials > Date Time > Standard Calendar)

Gruß
Klaus
 
Zuletzt bearbeitet:

turtle

Top Contributor
Java:
		DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("dd.MM.yyyy HH:mm:ss");
		DateTime dtVergangenheit = dateTimeFormatter.parseDateTime("24.07.1963 17:00:00");
		DateTime dtNow = new DateTime(new Date());
		Days daysBetween = Days.daysBetween(dtVergangenheit, dtNow);
		System.out.println(daysBetween.getDays()); //18670
 

pallidotcom

Mitglied
Ich habe es nun hinbekommen. Entscheidend war folgender Parameter den ich der Period übergeben musste: PeriodType.yearDayTime()

Außerdem hatte ich noch den falschen Monat angegeben. Folgender Code ist rausgekommen:

Java:
String dateTime = "08/24/1963 17:00:00";
DateTimeZone.setDefault(DateTimeZone.forID("Europe/Berlin"));
DateTimeFormatter dtf = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss");
DateTime startDate = dtf.parseDateTime(dateTime);
DateTime currentDate = new DateTime(DateTimeZone.forID("Europe/Berlin"));

Period period = new Period(startDate, currentDate, PeriodType.yearDayTime());

mYears = period.getYears();
mDays = period.getDays();
mHours = period.getHours();
mMinutes = period.getMinutes();
mSeconds = period.getSeconds();
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Performance-Probleme mit Joda-Time Allgemeine Java-Themen 3
2 Joda Time - Localtime mit anderer Zeit vergleichen? Allgemeine Java-Themen 1
T [Joda Time] Nächsten Samstag finden Allgemeine Java-Themen 8
MiMa seltsames Jahr aus Musik Metadaten ? Allgemeine Java-Themen 2
ARadauer Jahr Umrechnung Allgemeine Java-Themen 3
D Erstmaliger Programmstart im neuen Jahr Allgemeine Java-Themen 7
T KW=1 Jahr=2008 Monat=Dezember => GregorianCalendar Allgemeine Java-Themen 8
DEvent min. Jahr von Date Allgemeine Java-Themen 2
A Jahr ermitteln Allgemeine Java-Themen 2
E Existiert eine Methode für die Kalenderwochen im Jahr? Allgemeine Java-Themen 4
T MP3 Dateiinformationen auslesen (Titel,Interpret,Jahr,Album) Allgemeine Java-Themen 4
G Datum letzte 7 tage Allgemeine Java-Themen 6
L Methoden Dateien älter als 30 Tage? Allgemeine Java-Themen 11
L Anzahl der Tage eines Monats Allgemeine Java-Themen 3
A einzelne Tage als Datum ausgeben Allgemeine Java-Themen 6
M GregorianCalender Tage dazuzählen Allgemeine Java-Themen 2
J Alle Tage eines Jahres Allgemeine Java-Themen 2
G Log4J - Logs älter als 3 Tage löschen Allgemeine Java-Themen 5
T Anzahl Tage zwischen zwei Daten - Stunde fehlt? Allgemeine Java-Themen 2
P Dauer (Tage, Stunden, Minuten, Sekunden) berechnen Allgemeine Java-Themen 5
2 Tage zwischen zwei Datumsdaten zählen Allgemeine Java-Themen 2
G Tage zwischen zwei Datumsdaten zählen Allgemeine Java-Themen 3
G Anzahl Tage in Datum umwandeln Allgemeine Java-Themen 13
L Anzahl Tage zwischen zwei Kalenderdaten Allgemeine Java-Themen 5
H Differenz Tage errechnen Allgemeine Java-Themen 2
O aktuelle Tage bis zum jahresende ermitteln Allgemeine Java-Themen 3
G Zum Datum 30 Tage oder 1 Monat hinzufügen Allgemeine Java-Themen 10
R Date Tage abziehen Allgemeine Java-Themen 3

Ähnliche Java Themen


Oben