This question already has answers here:
Using DateTimeFormatter on january first cause an invalid year value
(1个答案)
Can't parse String to LocalDate (Java 8)
(2个答案)
2年前关闭。
将
为什么会这样?
因此,
有关差异,请参见this related question或the Wikipedia article on week dates。
所以我们想要的模式是
(1个答案)
Can't parse String to LocalDate (Java 8)
(2个答案)
2年前关闭。
将
DateTimeFormatter
(具有以下模式)与LocalDate
一起使用会导致错误的年份。import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
DateTimeFormatter format = DateTimeFormatter.ofPattern("MM-d-YYYY");
LocalDate date = LocalDate.of(2018, 12, 31);
date.format(format); // returns 12-31-2019 (expected 2018)
为什么会这样?
最佳答案
发生这种情况是因为MM-d-YYYY
模式不是我们认为的那样。
如果我们看the documentation,我们会看到
Symbol Meaning Presentation Examples
------ ------- ------------ -------
y year-of-era year 2004; 04
Y week-based-year year 1996; 96
因此,
YYYY
使用基于周的年份,而实际上我们想要yyyy
,即年份。有关差异,请参见this related question或the Wikipedia article on week dates。
所以我们想要的模式是
MM-d-yyyy
。关于java - 为什么使用带有YYYY模式的DateTimeFormatter格式化日期会给出错误的年份? [复制],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51141995/
10-13 05:04