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