有没有人知道不同语言/区域设置的好日期解析器.Java(SimpleDateFormat)的内置解析器非常严格.它应该用当前日期完成缺失的部分.
例如
如果我不输入年份(仅限日期和月份),则应使用当前年份.
如果年份是08那么它不应该解析0008因为当前年份模式有4位数.
编辑:我想解析用户的输入.例如,如果用户的区域设置日期格式为"dd.mm.yyyy",并且用户仅键入"12.11".那么解析器应该接受它作为值为"12.11.2008"的有效日期.目标是良好的可用性.
检查Joda Time及其Freaky Formatters.
Java 8包含JSR-310,因此也可以作为解决方案.
从43642开始,虽然不一定重复:
请参阅Apache Commons的DateUtils.有一种parseDate
方法可以让您String
和多个模式尝试并吐出一个Date
实例.
(为清晰起见而编辑.)
就个人而言,我认为严格是好的.因此,许多不同的情况需要围绕宽松解析的不同规则,所以不可能真正地将它整合到一个公共库中.
但是,我会彻底推荐Joda Time而不是内置的日期/时间类.他们的格式化程序和解析器是线程安全的和不可变的,这也有帮助.Joda Time对轻松解析提供了一些支持,如另一个答案中所示,但您应该自己必须提供一些规则.