This question already has answers here:
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个答案)
4年前关闭。
以下测试失败:
失败:
这与
/ Sidenote:关于“重复”问题中标记的答案,我不认为这是重复的!
(1个答案)
How to change the base date for parsing two letter years with Java 8 DateTimeFormatter?
(1个答案)
4年前关闭。
以下测试失败:
'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'
。/ Sidenote:关于“重复”问题中标记的答案,我不认为这是重复的!
最佳答案
可以使用DateTimeFormatterBuilder.appendValueReduced()来控制基准年。
这段代码将以1900年而不是2000年为基准日期进行解析:
DateTimeFormatter f = new DateTimeFormatterBuilder()
.appendPattern("ddMM")
.appendValueReduced(ChronoField.YEAR, 2, 2, 1900)
.toFormatter();
LocalDate date = LocalDate.parse("070886")
10-05 19:38