有没有办法强制约达时间解析日期,只有当他们包含四位数年?例如:如何仅解析四位数年份(与乔达时间)?
- 2009-11-11 - 应该解析
- 11年9月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
- 还有更多...
我是盲人!非常感谢。顺便说一下,该方法称为appendFixedDecimal()。 – 2009-11-18 15:43:58