diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/DateParser.java b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/DateParser.java index 0edb1d2e5..87c6cddc2 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/DateParser.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/DateParser.java @@ -13,19 +13,19 @@ package org.dromara.hutool.core.date.format.parser; import org.dromara.hutool.core.date.DateException; -import org.dromara.hutool.core.date.format.DateBasic; import java.util.Date; /** - * 日期解析接口,用于解析日期字符串为 {@link Date} 对象
- * Thanks to Apache Commons Lang 3.5 + * 日期解析接口,用于解析日期字符串为 {@link Date} 对象 + * + * @author Looly */ -public interface DateParser extends DateBasic{ +@FunctionalInterface +public interface DateParser { /** - * 将日期字符串解析并转换为 {@link Date} 对象
- * 等价于 {@link java.text.DateFormat#parse(String)} + * 将日期字符串解析并转换为 {@link Date} 对象 * * @param source 被解析的日期字符串 * @return {@link Date}对象 diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/ISO8601DateParser.java b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/ISO8601DateParser.java index 2686825e0..3132d681e 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/ISO8601DateParser.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/ISO8601DateParser.java @@ -15,10 +15,11 @@ package org.dromara.hutool.core.date.format.parser; import org.dromara.hutool.core.date.DateException; import org.dromara.hutool.core.date.DatePattern; import org.dromara.hutool.core.date.DateTime; -import org.dromara.hutool.core.date.format.DefaultDateBasic; import org.dromara.hutool.core.regex.ReUtil; -import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.CharUtil; +import org.dromara.hutool.core.text.StrUtil; + +import java.io.Serializable; /** * ISO8601日期字符串(JDK的Date对象toString默认格式)解析,支持格式; @@ -34,7 +35,7 @@ import org.dromara.hutool.core.text.CharUtil; * @author looly * @since 6.0.0 */ -public class ISO8601DateParser extends DefaultDateBasic implements PredicateDateParser { +public class ISO8601DateParser implements PredicateDateParser, Serializable { private static final long serialVersionUID = 1L; /** diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/NormalDateParser.java b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/NormalDateParser.java index ad63633a5..603dea5c2 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/NormalDateParser.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/NormalDateParser.java @@ -15,11 +15,11 @@ package org.dromara.hutool.core.date.format.parser; import org.dromara.hutool.core.date.DateException; import org.dromara.hutool.core.date.DatePattern; import org.dromara.hutool.core.date.DateTime; -import org.dromara.hutool.core.date.format.DefaultDateBasic; import org.dromara.hutool.core.regex.ReUtil; -import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.CharUtil; +import org.dromara.hutool.core.text.StrUtil; +import java.io.Serializable; import java.util.regex.Pattern; /** @@ -35,7 +35,7 @@ import java.util.regex.Pattern; * @author looly * @since 6.0.0 */ -public class NormalDateParser extends DefaultDateBasic implements PredicateDateParser { +public class NormalDateParser implements PredicateDateParser, Serializable { private static final long serialVersionUID = 1L; private static final Pattern patternNorm = Pattern.compile("\\d{4}-\\d{1,2}-\\d{1,2}(\\s\\d{1,2}:\\d{1,2}(:\\d{1,2})?(.\\d{1,6})?)?"); diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/PatternsDateParser.java b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/PatternsDateParser.java index 6cbe513b3..450a9d77c 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/PatternsDateParser.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/PatternsDateParser.java @@ -15,8 +15,8 @@ package org.dromara.hutool.core.date.format.parser; import org.dromara.hutool.core.date.CalendarUtil; import org.dromara.hutool.core.date.DateException; import org.dromara.hutool.core.date.DateTime; -import org.dromara.hutool.core.date.format.DefaultDateBasic; +import java.io.Serializable; import java.util.Calendar; import java.util.Locale; @@ -27,7 +27,7 @@ import java.util.Locale; * @author looly * @since 6.0.0 */ -public class PatternsDateParser extends DefaultDateBasic implements DateParser { +public class PatternsDateParser implements DateParser, Serializable { private static final long serialVersionUID = 1L; /** @@ -74,7 +74,11 @@ public class PatternsDateParser extends DefaultDateBasic implements DateParser { return this; } - @Override + /** + * 获取{@link Locale} + * + * @return {@link Locale} + */ public Locale getLocale() { return locale; } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/PositionDateParser.java b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/PositionDateParser.java index 5203aec09..665fc1ab2 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/PositionDateParser.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/PositionDateParser.java @@ -12,6 +12,8 @@ package org.dromara.hutool.core.date.format.parser; +import org.dromara.hutool.core.date.format.DateBasic; + import java.text.ParsePosition; import java.util.Calendar; import java.util.Date; @@ -22,7 +24,7 @@ import java.util.Date; * * @since 2.16.2 */ -public interface PositionDateParser extends DateParser { +public interface PositionDateParser extends DateParser, DateBasic { /** * 将日期字符串解析并转换为 {@link Date} 对象
@@ -35,16 +37,14 @@ public interface PositionDateParser extends DateParser { Date parse(CharSequence source, ParsePosition pos); /** - * 根据给定格式更新{@link Calendar} - * Upon success, the ParsePosition index is updated to indicate how much of the source text was consumed. - * Not all source text needs to be consumed. - * Upon parse failure, ParsePosition error index is updated to the offset of the source text which does not match the supplied format. + * 根据给定格式更新{@link Calendar}
+ * 解析成功后,{@link ParsePosition#getIndex()}更新成转换到的位置
+ * 失败则{@link ParsePosition#getErrorIndex()}更新到解析失败的位置 * * @param source 被转换的日期字符串 * @param pos 定义开始转换的位置,转换结束后更新转换到的位置 - * @param calendar The calendar into which to set parsed fields. - * @return true, if source has been parsed (pos parsePosition is updated); otherwise false (and pos errorIndex is updated) - * @throws IllegalArgumentException when Calendar has been set to be not lenient, and a parsed field is out of range. + * @param calendar 解析并更新的{@link Calendar} + * @return 解析成功返回 {@code true},否则返回{@code false} */ boolean parse(CharSequence source, ParsePosition pos, Calendar calendar); } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/PredicateDateParser.java b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/PredicateDateParser.java index 116f33100..837662c9a 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/PredicateDateParser.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/PredicateDateParser.java @@ -4,7 +4,7 @@ import java.util.function.Predicate; /** * 通过判断字符串的匹配,解析为日期
- * 通过实现{@link #test(Object)}方法判断字符串是否符合此解析器的规则,如果符合,则调用{@link #parse(String)}完成解析。 + * 通过实现{@link #test(Object)}方法判断字符串是否符合此解析器的规则,如果符合,则调用{@link #parse(CharSequence)}完成解析。 * * @author looly * @since 6.0.0 diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/PureDateParser.java b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/PureDateParser.java index 007a15878..b5b8f9958 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/PureDateParser.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/date/format/parser/PureDateParser.java @@ -15,10 +15,11 @@ package org.dromara.hutool.core.date.format.parser; import org.dromara.hutool.core.date.DateException; import org.dromara.hutool.core.date.DatePattern; import org.dromara.hutool.core.date.DateTime; -import org.dromara.hutool.core.date.format.DefaultDateBasic; import org.dromara.hutool.core.math.NumberUtil; import org.dromara.hutool.core.text.StrUtil; +import java.io.Serializable; + /** * 纯数字的日期字符串解析,支持格式包括; *