我知道这个问题有很多问题,显然你无法解析任何日期.但是,我发现python-dateutil库能够解析我抛出的每个日期,同时在确定日期格式字符串时完全没有必要.Joda时间总是作为一个伟大的Java日期解析器出售,但它仍然需要您在选择Format(或创建自己的)之前决定日期的格式.你不能只调用DateFormatter.parse(mydate)并神奇地获得一个Date对象.
例如,使用python-dateutil正确解析日期"Wed Mar 04 05:09:06 GMT-06:00 2009":
import dateutil.parser
print dateutil.parser.parse('Wed Mar 04 05:09:06 GMT-06:00 2009')
Run Code Online (Sandbox Code Playgroud)
但以下Joda时间调用不起作用:
String date = "Wed Mar 04 05:09:06 GMT-06:00 2009";
DateTimeFormatter fmt = ISODateTimeFormat.dateTime();
DateTime dt = fmt.parseDateTime(date);
System.out.println(date);
Run Code Online (Sandbox Code Playgroud)
并且创建自己的DateTimeFormatter会破坏目的,因为这似乎与使用具有正确格式字符串的SimpleDateFormatter相同.
是否有类似的方法来解析Java中的日期,比如python-dateutil?我不关心错误,我只是希望它大多完美.
我正在研究一个自然语言解析器,它用英语检查一个句子,并提取一些信息,如姓名,日期等.
例如:" 让我们下周二下午5点在海滩见面. "
所以输出将是这样的:" 让我们在海滩的1700小时在15/09/2009见面 "
基本上,我想知道的是,JAVA是否有任何框架或库可用于执行这些操作,例如从句子中解析日期并提供具有某种指定格式的输出.
此致,Pranav
谢谢你的回复.我查看了几个NLP,如LingPipe,OpenPL,Stanford NLP.我想问他们为java的日期解析做了什么.
是否有一些适用于Java的智能日期/时间解析器库?智能我的意思是,我不需要指定日期/时间格式.API应该类似于:
Calendar cal = DateTimeParser.parse("01/06/10 14:55");
cal = DateTimeParser.parse("1 Jan 2009"); // assumes 00:00 time
cal = DateTimeParser.parse("1.2.2010");
cal = DateTimeParser.parse("kygyutrtf"); // throws exception
Run Code Online (Sandbox Code Playgroud)
更新:
// I'm telling the parser: "If unsure, assume US date format"
cal = DateTimeParser.parse("01/02/03", new Locale("en-us"));
Run Code Online (Sandbox Code Playgroud)