有没有办法强制 Joda 时间仅在包含四位数年份时才解析日期?例如:
- 2009-11-11 - 应该解析
- 09-11-11 - 不应该解析
尝试了以下代码:
DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
DateTimeFormatter formatter = builder.appendYear(4, 4).appendLiteral('-').appendMonthOfYear(1).appendLiteral('-').appendDayOfMonth(1).toFormatter();
formatter.parseDateTime("09-11-11");
解析为 0009-11-11。显然 appendYear 方法中的 minDigits 仅在打印日期时用于格式化。
如果我使用 appendYearOfEra(),结果是一样的。如果我使用 appendYearOfCentury(),它会将年份解析为 1909。
我们正在实现一个通用数据解析器,它将识别各种类型的输入。此外,该示例是真实交易的缩写形式(为简单起见)。现实生活场景解析日期,可以将工作日、月份作为单词、时间、区域和不同的字符分隔月、日和年。因此,编写正则表达式或检查字符串的内容/长度可能相当困难。
一些真实的例子可能如下所示:
- 2009-11-11
- 星期三 2009-11-11T15:00:00
- 2009/11/11 15:00
- 还有很多...