TL; DR
LocalDate.parse(
"2/18/2013" ,
DateTimeFormatter.ofPattern ("M/d/uuuu")
).plusYears(1)
詳細
accepted Answerは正しいが、Java 8のように時代遅れです。
java.time
java.time Java 8以降に組み込まれたフレームワークは、面倒な古いjava.util.Date/.Calendarクラスに取って代わります。新しいクラスは、成功したJoda-Timeフレームワークによってインスピレーションを受けており、コンセプトは同様ですが再設計されています。定義:JSR 310。プロジェクトThreeTen-Extraによって拡張されました。 Tutorialを参照してください。
LocalDate
これらの新しいクラスは、無時刻やタイムゾーンと日付のみの値を表すために、LocalDate
含まれています。
まず、String入力を解析する必要があります。 java.time formatterは、古いクラスに似たパターンコードを使用しますが、まったく同じではありません。だから、新しい文書を注意深く読んでください。
パッド入りゼロ、あなたの入力文字列がいくつかの値についてゼロ桁をリード欠け
注意してください。つまり、とdd
ではなく、とd
の単一パターンコードを使用する必要があります。ダブルコードは、2
ではなく、02
以外の場合、常に1桁の値にパディングゼロを含めることを意味します。
String input = "2/18/2013";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("M/d/uuuu");
LocalDate localDate = LocalDate.parse (input , formatter);
年を追加します。 java.timeフレームワークはうるう年を担当します。
LocalDate yearLater = localDate.plusYears (1);
コンソールにダンプします。
System.out.println ("localDate: " + localDate + " and yearLater: " + yearLater);
LOCALDATE:2013年2月18日とyearLater:2014年2月18日
どうして... 2/29/2016?それから何年ですか? – Makoto
[Javaカレンダーに年を追加しても機能しない]の複製があります(http://stackoverflow.com/questions/3883167/add-year-to-java-calendar-doesnt-work) –