JodaTime: plusMonths (1) zwei mal anders als plusMonths (2)

8

Beispieltest

%Vor%

Das seltsame Ergebnis:

%Vor%

Warum unterscheidet sich das?

    
MariuszS 29.01.2015, 12:11
quelle

1 Antwort

16

Wenn Sie einen Monat zu 2015/01/29 hinzufügen, erhalten Sie 2015/02/29 - da 2015 kein Schaltjahr ist, das ist kein gültiges Datum, also wählt Joda 2015/02/28 , dokumentiert :

  

Die Addition kann das Jahr ändern, aber normalerweise ist der Tag des Monats   unverändert. Wenn das Hinzufügen von Monaten den Monatstag ungültig macht, ist dies der Fall   angepasst an den letzten gültigen Tag des Monats.

Und ein weiterer Monat, der zu 2015/02/28 hinzugefügt wurde, führt zum tatsächlichen Datum 2015/03/28 .

Das Problem mit dem fehlenden 29. Februar tritt nicht auf, wenn zwei Monate hinzugefügt werden, da Joda niemals ein ungültiges Datum erhält.

Das gleiche gilt beispielsweise für new LocalDate(2015, 03, 31).plusMonths(2) gegenüber new LocalDate(2015, 03, 31).plusMonths(1).plusMonths(1) - ich denke, das ist häufiger als Schaltjahre.

    
stuXnet 29.01.2015, 12:15
quelle

Tags und Links