参见英文答案 >
Parsing string to local date doesn’t use desired century 1个
>
How to change the base date for parsing two letter years with Java 8 DateTimeFormatter? 1个
以下测试失败:’86生日形成为2068年.我如何格式化为1986年?
@Test
public void testBirthday() {
assertEquals("1986-08-07", java.time.LocalDate.parse("070886",
java.time.format.DateTimeFormatter.ofPattern("ddMMyy")));
}
失败:
java.lang.AssertionError: expected:<1986-08-07> but was:<2086-08-07>
这与org.joda.time库有很大的不同,它可以在这里正确地假设19′.
/旁注:关于“重复”问题中的标记答案,我不认为这是重复的!
最佳答案 基准年可以使用
DateTimeFormatterBuilder.appendValueReduced()控制.
此代码将解析基准日期为1900而不是2000:
DateTimeFormatter f = new DateTimeFormatterBuilder()
.appendPattern("ddMM")
.appendValueReduced(ChronoField.YEAR, 2, 2, 1900)
.toFormatter();
LocalDate date = LocalDate.parse("070886")