是否有一个很好的Java日期解析器?

Hor*_*ux7 23 java parsing date

有没有人知道不同语言/区域设置的好日期解析器.Java(SimpleDateFormat)的内置解析器非常严格.它应该用当前日期完成缺失的部分.

例如

  • 如果我不输入年份(仅限日期和月份),则应使用当前年份.
  • 如果年份是08那么它不应该解析0008因为当前年份模式有4位数.

编辑:我想解析用户的输入.例如,如果用户的区域设置日期格式为"dd.mm.yyyy",并且用户仅键入"12.11".那么解析器应该接受它作为值为"12.11.2008"的有效日期.目标是良好的可用性.

Pet*_*rta 23

检查Joda Time及其Freaky Formatters.

Java 8包含JSR-310,因此也可以作为解决方案.

  • 那么,回答这个问题的代码将如何使用Joda Time? (4认同)

Joe*_*dge 13

43642开始,虽然不一定重复:

请参阅Apache Commons的DateUtils.有一种parseDate方法可以让您String和多个模式尝试并吐出一个Date实例.

  • 为apache Commons +1!这些图书馆经常被忽视或被低估,许多程序员真的不知道它们包含什么. (2认同)

Jon*_*eet 8

(为清晰起见而编辑.)

就个人而言,我认为严格是好的.因此,许多不同的情况需要围绕宽松解析的不同规则,所以不可能真正地将它整合到一个公共库中.

但是,我彻底推荐Joda Time而不是内置的日期/时间类.他们的格式化程序和解析器是线程安全的和不可变的,这也有帮助.Joda Time对轻松解析提供了一些支持,如另一个答案中所示,但您应该自己必须提供一些规则.