【发布时间】:2015-09-10 15:05:48
【问题描述】:
如果我使用 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 进行解释的,但是我看不到在从模式构建我自己的格式化程序时使用的值更改的方法。这根本不可能,还是我错过了指定解析两个字母年份的行为的可能性?
【问题讨论】:
标签: java date parsing java-time 2-digit-year