如果我使用像d/M/yy
创建 Java 8 DateTimeFormatter 这样的模式(例如使用DateTimeFormatter.ofPattern(pattern);
(我将只用于解析,而不是格式化),它将把所有两个字母的年份解释为 20xx,例如解析一个像13/5/99
被解释为的字符串2099-05-13
,在我的情况下是错误的(它应该是在 1999 年)。
在我的应用程序中,我试图从 OCR 文档中解析日期,这些文档可能仍然来自 90 年代,因此将日期解释为当前日期之前 80 年和之后 20 年内的旧 SimpleDateFormat 行为适合我很好。但由于各种原因,我仍然希望将整个日期解析逻辑切换到新的 Java 8 DateTimeFormatters。
查看 Java 源代码,我看到这都是相对于常量进行解释的ReducedPrinterParser.BASE_DATE
,但是我看不到在从模式构建我自己的格式化程序时更改使用的值。这根本不可能,还是我错过了一些指定解析两个字母年份的行为的可能性?