小编Emi*_*vas的帖子

如何解析四位数年份(使用Joda Time)?

有没有办法强制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");
Run Code Online (Sandbox Code Playgroud)

解析成0009-11-11.显然,方法appendYear中的minDigits仅用于在打印日期时进行格式化.
如果我使用appendYearOfEra(),结果是一样的.如果我使用appendYearOfCentury(),它会将年份解析为1909年.

我们正在实现一般数据解析器,它将识别各种类型的输入.此示例也是实际交易的缩短形式(为简单起见).现实生活场景解析可以有工作日的日期,月份作为单词,时间,区域和分隔月,日和年的不同字符.因此,编写RegEx或检查字符串的内容/长度可能相当困难.

一些真实的例子可能如下所示:

  • 2009-11-11
  • 周三2009-11-11T15:00:00
  • 2009/11/11 15:00
  • 还有很多...

java datetime jodatime

4
推荐指数
1
解决办法
2339
查看次数

标签 统计

datetime ×1

java ×1

jodatime ×1