TL;博士
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
,表示沒有時間的天,也不時區的日期,唯一的價值。
首先我們必須解析字符串輸入。 java.time formatter使用類似於舊類的模式代碼,但不完全相同。所以一定要仔細閱讀新文檔。
填充零
請注意,您的輸入字符串缺少某些值的前導零位。這意味着您應該使用單個模式代碼M
和d
而不是MM
和dd
。雙代碼意味着您期望填充零始終包含在其他一位數值中,而不是2
,而不是02
。
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 2013-02-18 23:05:26
可能重複[年加入Java日曆不起作用(http://stackoverflow.com/questions/3883167/add-year-to-java-calendar-doesnt-work) – 2013-02-18 23:09:44