2016-04-29 36 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);