parserList;
+
+ /**
+ * 构造
+ */
+ public RegisterDateParser() {
+ parserList = ListUtil.of(
+ // 纯数字形式
+ PureDateParser.INSTANCE,
+ // HH:mm:ss 或者 HH:mm 时间格式匹配单独解析
+ TimeParser.INSTANCE,
+ // JDK的Date对象toString默认格式,类似于:
+ // Tue Jun 4 16:25:15 +0800 2019
+ // Thu May 16 17:57:18 GMT+08:00 2019
+ // Wed Aug 01 00:00:00 CST 2012
+ CSTDateParser.INSTANCE,
+ // ISO8601标准时间
+ // yyyy-MM-dd'T'HH:mm:ss'Z'
+ // yyyy-MM-dd'T'HH:mm:ss+0800
+ ISO8601DateParser.INSTANCE
+ );
+ }
+
+ @Override
+ public Date parse(final String source) throws DateException {
+ return parserList
+ .stream()
+ .filter(predicateDateParser -> predicateDateParser.test(source))
+ .findFirst()
+ .map(predicateDateParser -> predicateDateParser.parse(source)).orElse(null);
+ }
+
+ /**
+ * 注册自定义的{@link PredicateDateParser}
+ * 通过此方法,用户可以自定义日期字符串的匹配和解析,通过循环匹配,找到合适的解析器,解析之。
+ *
+ * @param dateParser {@link PredicateDateParser}
+ * @return this
+ */
+ public RegisterDateParser register(final PredicateDateParser dateParser) {
+ this.parserList.add(dateParser);
+ return this;
+ }
+}
diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/package-info.java b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/package-info.java
index 148b8fde8..7d9b96a1d 100644
--- a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/package-info.java
+++ b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/package-info.java
@@ -11,9 +11,14 @@
*/
/**
- * 提供日期解析相关封装
+ * 提供日期解析相关封装,主要包括:
+ *
+ * DateParser
+ * / \
+ * FastDateParser RegisterDateParser
+ * (根据日期格式解析) (根据注册的模式匹配解析)
+ *
*
* @author looly
- *
*/
package org.dromara.hutool.core.date.format.parser;