一个日期模式识别算法,不仅能够识别日期模式,还可以获取Java日期格式中的可能日期。这个算法非常快速和轻量级。处理时间是线性的,并且所有日期都在单次扫描中被识别出来。该算法使用树遍历机制解析日期。树数据结构是定制创建的,以构建支持的日期、时间和月份模式。
算法还可以识别日期字面值之间的多个空格字符。例如 DD DD DD 和 DD DD DD 被视为有效日期。
以下日期模式被认为是有效的并可使用此算法进行识别。
dd MM(MM) yy(yy) yy(yy) MM(MM) dd MM(MM) dd yy(yy)
其中 M 代表月份文字,以字母格式表示,例如 Jan 或 January。
允许在日期之间使用的分隔符有 '/', '\', ' ', ',', '|', '-', ' '。
它还可以识别以下格式的尾随时间模式 hh(24):mm:ss.SSS 上午/下午 hh(24):mm:ss 上午/下午 hh(24):mm:ss 上午/下午
分辨率时间是线性的,不使用模式匹配或蛮力方法。该算法基于树遍历,返回以下三个组件的日期列表:文本中识别的日期字符串 - 转换和格式化的日期字符串 - SimpleDateFormat
使用日期字符串和格式字符串,用户可以根据自己的需求将字符串转换为对象。
该算法库可在 Maven 中心获取。
<dependency>
<groupId>net.rationalminds</groupId>
<artifactId>DateParser</artifactId>
<version>0.3.0</version>
</dependency>
使用此功能的示例代码如下。
import java.util.List;
import net.rationalminds.LocalDateModel;
import net.rationalminds.Parser;
public class Test {
public static void main(String[] args) throws Exception {
Parser parser=new Parser();
List<LocalDateModel> dates=parser.parse("Identified date :'2015-January-10 18:00:01.704', converted");
System.out.println(dates);
}
}
输出结果:[LocalDateModel{originalText=2015-january-10 18:00:01.704, dateTimeString=2015-1-10 18:00:01.704, conDateFormat=yyyy-MM-dd HH:mm:ss.SSS, start=18, end=46}]
详细博客请参考http://coffeefromme.blogspot.com/2015/10/how-to-extract-date-object-from-given.html
完整代码可在GitHub上找到:https://github.com/vbhavsingh/DateParser