2016-04-29 48 views
-1

与Java 8无效时LOCALDATE它创造

我想获得2016年3月31日与该行代码

System.out.println(LocalDate.now().withDayOfMonth(31).withMonth(3).withYear(2016)); 

我得到线程 “main” java.time.DateTimeException 例外:无效日期'APRIL 31'

+6

使用'withDayOfMonth'重新排序'withMonth'。您目前正在设置本月的第31天,即四月。 4月份没有31天。您不需要使用此方法设置日期,而是使用LocalDate构造函数。 –

+4

'LocalDate' [''of'](https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html#of-int-int-int-)静态工厂,但它是同样的观点:) – Tunaki

回答

1

正如评论所说,在2016年4月份运行此操作后,您试图将日期更改为31日,该日期在当月4月份不存在。因此,在设置日期之前,将月份更改为3月。

更好的是,使用静态of方法。

LocalDate localDate = LocalDate.of(2016 , 3 , 31); 

或使用enum常数Month.MARCH

LocalDate localDate = LocalDate.of(2016 , Month.MARCH , 31);