Closed. 此问题正在寻求书籍、工具、软件库等的推荐。不满足堆栈溢出指南 。目前不接受答案。
我正在寻找一个java库,它可以将字符串解析为POJO而不指定格式。我研究过POjava 。还有其他库可以做类似的事情吗?
DateTime dateTime = DateTimeParser.parse("21/02/13");
//If unclear use the cultural information passed
DateTime dateTime = DateTimeParser.parse("01/02/13", new Locale("en-us"));
//Should also work with time zones
DateTime dateTime = DateTimeParser.parse("2011/12/13T14:15:16+01:00");
我发现以下链接也有同样的问题Java 智能日期/时间解析器 ,但不是很有用的答案。 Joda 和 JChronic 都没有达到我想要的效果。如果我错了请纠正我。
Update:
我说 Joda 没有解决我的目的的原因是,Joda 希望以 ISO8601 格式或您指定的任何格式(如“yyyyMMdd”)解析字符串。我将无法对此格式进行硬编码,因为我需要处理多种格式。
我有一个解决方案,可以消除美国或欧洲日期格式(即 mm/dd/yy 或 dd/mm/yy)的歧义。假设我可以访问日期的时区,我可以确定它是美国格式还是欧洲格式吗?有人可以告诉我如何做到这一点吗?谷歌搜索但一无所获。
问题是有些格式cannot 应该猜对了。
一个简单的例子是01/02/2013
。这是2月1日还是1月2日?或者更糟糕的是:01/02/09
?
Both 格式存在。 (谢谢英国和美国!)
因此,任何格式猜测者都必须依靠运气来猜测这些格式,或者故意失败。
蟒蛇模块dateutil.parser
可以作为尽力而为解析器的示例。抱歉,我不知道 java 的等价物。但你可能想看看乔达时间
http://labix.org/python-dateutil#head-b95ce2094d189a89f80f5ae52a05b4ab7b41af47
它实际上有参数dayfirst
and yearfirst
.
然后是一个perl模块:
https://metacpan.org/pod/Time::ParseDate
您也许可以使用该模块中的优先级列表。盲目地尝试多种模式并不是很快(优化的词法分析器会更快),但它对您来说可能已经足够好了,除非您猜测数百万条记录的格式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)