tl; dr
LocalDate.parse(
"2/18/2013" ,
DateTimeFormatter.ofPattern ("M/d/uuuu")
).plusYears(1)
Einzelheiten
Die accepted Answer ist richtig, aber veraltet wie von Java 8.
java.time
Die in Java gebaut java.time Rahmen 8 und später verdrängt die lästigen alten java.util.Date/.Calendar Klassen. Die neuen Klassen sind inspiriert von dem sehr erfolgreichen Joda-Time Framework, das als Nachfolger gedacht ist, ähnlich im Konzept, aber neu gestaltet. Definiert von JSR 310. Erweitert um das Projekt ThreeTen-Extra. Siehe Tutorial.
LocalDate
Diese neuen Klassen umfassen LocalDate
, ein Datum Wert nur ohne Zeit-of-Tag noch die Zeitzone zu vertreten.
Zuerst müssen wir den String-Eingang analysieren. Die java.time formatter verwendet Pattern-Codes ähnlich den alten Klassen, aber nicht genau die gleichen. Achten Sie also darauf, den neuen Doc sorgfältig zu lesen.
Padded Null
Beachten Sie, dass Ihre Eingabe String fehlt Ziffer Null für einige Werte führt. Das bedeutet, dass Sie die einzelnen Mustercodes M
und d
statt MM
und dd
verwenden sollten. Doppelte Codes bedeuten, dass Sie erwarten, dass der Füllgrad Null immer bei sonst einstelligen Werten, 02
statt 2
, enthalten ist.
String input = "2/18/2013";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("M/d/uuuu");
LocalDate localDate = LocalDate.parse (input , formatter);
Fügen Sie ein Jahr hinzu. Das java.time Framework kümmert sich um das Schaltjahr.
LocalDate yearLater = localDate.plusYears (1);
Dump zur Konsole.
System.out.println ("localDate: " + localDate + " and yearLater: " + yearLater);
LOCALDATE: 2013.02.18 und yearLater: 2014-02-18
Was ist mit ... 29.02.2016? Was ist ein Jahr davon? – Makoto
mögliches Duplikat von [Jahr zum Java-Kalender hinzufügen funktioniert nicht] (http://stackoverflow.com/questions/3883167/add-year-to-java-calendar-doesnt-work) –