So berechnen Sie den Unterschied NUR in den Monaten mit der Java-API-Joda
Bin ich ein Programm schreiben, das soll nur die Berechnung der Monate zwischen 2 Daten und geben den Wert zurück an das Programm. Zum Beispiel, wenn ich habe, um berechnen Sie die Anzahl der Monate zwischen 1. April und 30. Juni (das ist ein Quartal, 3 Monate), und ich verwende den folgenden code:
DateTime start = new DateTime().withDate(2011, 4, 1);
DateTime end = new DateTime().withDate(2011, 6, 30);
Months mt = Months.monthsBetween(start, end);
int monthDiff = mt.getMonths();
Mit dieser, ich bin noch immer "2" als Anzahl der Monate, in der Erwägung, dass es eigentlich "3" Monate. Dies ist ein Beispiel für das, was ich will. Ich bin nur der Berechnung der Anzahl der Monate (d.h. vom 1. start-Monat t der Letzte Termin Ende Monat) und ich brauche eine zusätzliche Analyse wie Tage, Wochen, Stunden, etc. Wie kann ich das erreichen?
Jede Hilfe würde geschätzt werden.
- Kann nicht warten, Lesen die Antwort von Jon Skeet, Stackoverflow und Datum API-Experte 😉
- Ich glaube das Yoda mal Antwort richtig ist. Vom 1. april bis (aber nicht einschließlich) 30. Juni wäre fast 3 Monate. Ich denke, beide Termine haben die gleiche Zeit (00:00) - und damit 30. Juni ist nicht wirklich in die Produktpalette aufgenommen.
- Ja, das ist richtig. Der Zeitraum angezeigt wird, ist 2 Monate, 4 Wochen und 1 Tag.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die
withDaysRemoved()
Teil, um sicherzustellen, dass das hinzufügen, um die Anzahl der Monate funktioniert. Ansonsten zwei Termine wie2011-04-15
und2011-06-14
würde noch das Ergebnis in die Antwort wird2
Warum erwarten Sie, dass die Antwort zu
3 months
? Die genaue Antwort ist zwei Monate und ein bisschen, das führt dann in der zwei Monate Sie bekommen.Wenn Sie möchten, dass die Anzahl der Monate, die sind "berührt" von diesem Intervall, das ist eine ganz andere Frage.
fügen Sie Einfach 1, um das Ergebnis der Unterschied.monthDiff
variable in der Frage.Lassen
y1
undm1
werden das Jahr und der Monat des Startdatums,und
y2
undm2
werden das Jahr und der Monat für die Ende-Datum.Dann die Anzahl der Monate zwischen
Anfang und Ende, einschließlich der Monate von start-und Enddatum ist
Joda Algorithmus korrekt gezählt Unterschied zwischen diesen beiden Terminen. Diese pseudo-code wird der einfachste Weg, um zu erklären, wie es funktioniert:
Tun, was Sie wollen müssen Sie zu "verbessern" joda-Algorithmus: