有没有办法强制Joda时间只在它们包含四位数年份时解析日期?例如:
试过以下代码:
DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
DateTimeFormatter formatter = builder.appendYear(4, 4).appendLiteral('-').appendMonthOfYear(1).appendLiteral('-').appendDayOfMonth(1).toFormatter();
formatter.parseDateTime("09-11-11");
Run Code Online (Sandbox Code Playgroud)
解析成0009-11-11.显然,方法appendYear中的minDigits仅用于在打印日期时进行格式化.
如果我使用appendYearOfEra(),结果是一样的.如果我使用appendYearOfCentury(),它会将年份解析为1909年.
我们正在实现一般数据解析器,它将识别各种类型的输入.此示例也是实际交易的缩短形式(为简单起见).现实生活场景解析可以有工作日的日期,月份作为单词,时间,区域和分隔月,日和年的不同字符.因此,编写RegEx或检查字符串的内容/长度可能相当困难.
一些真实的例子可能如下所示: