2017-10-20 90 views
0

当我在LocalDate设置为2017年1月1日时使用DateTimeFormatter(代码波纹管)时,我以错误的年份值结束。1月份使用DateTimeFormatter首先导致无效年份值

LocalDate.of(2017,1,1).toString 

这将正确显示2017年1月1日,而

LocalDate.of(2017,1,1).format(DateTimeFormatter.ofPattern("dd MMM YYYY")) 

是给我: 01 janv。你知道为什么会发生这种情况吗?

+6

使用'y'而不是'Y'。这是以周为单位的一年。请参阅[DateTimeFormatter](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html)。我猜@Robby使用不同的本地(星期日是一周的第一天) – AxelH

+0

谢谢@AxelH,就是这样! –

回答

4

您正在使用“错误的”年份。

y 2004年的年份; 04

Y以周为单位的年份1996年; 96

来源:DateTimeFormatter

这basicly使用当前周的第一天,看看在哪一年它,而不是实际的一天。

其中一个问题是,这是本地依赖...