diff --git a/CHANGELOG.md b/CHANGELOG.md
index 486aae4ba..3e2f957ab 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,7 @@
* 【all】 部分接口添加FunctionalInterface修饰
* 【crypto】 KeyUtil增加readKeyStore重载
* 【extra】 JschUtil增加私钥传入支持(issue#INKDR@Gitee)
+* 【core】 DateUtil、DateTime、Convert全面支持jdk8的time包
### Bug修复
* 【http】 修复Cookie中host失效导致的问题(issue#583@Github)
diff --git a/hutool-core/src/main/java/cn/hutool/core/convert/ConverterRegistry.java b/hutool-core/src/main/java/cn/hutool/core/convert/ConverterRegistry.java
index 49632c3fc..4fd26839b 100644
--- a/hutool-core/src/main/java/cn/hutool/core/convert/ConverterRegistry.java
+++ b/hutool-core/src/main/java/cn/hutool/core/convert/ConverterRegistry.java
@@ -1,28 +1,5 @@
package cn.hutool.core.convert;
-import java.io.Serializable;
-import java.lang.ref.SoftReference;
-import java.lang.ref.WeakReference;
-import java.lang.reflect.Type;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.net.URI;
-import java.net.URL;
-import java.nio.charset.Charset;
-import java.nio.file.Path;
-import java.util.Calendar;
-import java.util.Collection;
-import java.util.Currency;
-import java.util.Locale;
-import java.util.Map;
-import java.util.TimeZone;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.concurrent.atomic.AtomicReference;
-
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.convert.impl.ArrayConverter;
import cn.hutool.core.convert.impl.AtomicBooleanConverter;
@@ -37,7 +14,6 @@ import cn.hutool.core.convert.impl.CollectionConverter;
import cn.hutool.core.convert.impl.CurrencyConverter;
import cn.hutool.core.convert.impl.DateConverter;
import cn.hutool.core.convert.impl.EnumConverter;
-import cn.hutool.core.convert.impl.Jdk8DateConverter;
import cn.hutool.core.convert.impl.LocaleConverter;
import cn.hutool.core.convert.impl.MapConverter;
import cn.hutool.core.convert.impl.NumberConverter;
@@ -46,17 +22,47 @@ import cn.hutool.core.convert.impl.PrimitiveConverter;
import cn.hutool.core.convert.impl.ReferenceConverter;
import cn.hutool.core.convert.impl.StackTraceElementConverter;
import cn.hutool.core.convert.impl.StringConverter;
+import cn.hutool.core.convert.impl.TemporalAccessorConverter;
import cn.hutool.core.convert.impl.TimeZoneConverter;
import cn.hutool.core.convert.impl.URIConverter;
import cn.hutool.core.convert.impl.URLConverter;
import cn.hutool.core.convert.impl.UUIDConverter;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.lang.TypeReference;
-import cn.hutool.core.util.ClassUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.TypeUtil;
+import java.io.Serializable;
+import java.lang.ref.SoftReference;
+import java.lang.ref.WeakReference;
+import java.lang.reflect.Type;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.net.URI;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.nio.file.Path;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.OffsetDateTime;
+import java.time.OffsetTime;
+import java.time.ZonedDateTime;
+import java.util.Calendar;
+import java.util.Collection;
+import java.util.Currency;
+import java.util.Locale;
+import java.util.Map;
+import java.util.TimeZone;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.concurrent.atomic.AtomicReference;
+
/**
* 转换器登记中心
*
@@ -371,6 +377,15 @@ public class ConverterRegistry implements Serializable{
defaultConverterMap.put(java.sql.Time.class, new DateConverter(java.sql.Time.class));
defaultConverterMap.put(java.sql.Timestamp.class, new DateConverter(java.sql.Timestamp.class));
+ // 日期时间 JDK8+(since 5.0.0)
+ defaultConverterMap.put(Instant.class, new TemporalAccessorConverter(Instant.class));
+ defaultConverterMap.put(LocalDateTime.class, new TemporalAccessorConverter(LocalDateTime.class));
+ defaultConverterMap.put(LocalDate.class, new TemporalAccessorConverter(LocalDate.class));
+ defaultConverterMap.put(LocalTime.class, new TemporalAccessorConverter(LocalTime.class));
+ defaultConverterMap.put(ZonedDateTime.class, new TemporalAccessorConverter(ZonedDateTime.class));
+ defaultConverterMap.put(OffsetDateTime.class, new TemporalAccessorConverter(OffsetDateTime.class));
+ defaultConverterMap.put(OffsetTime.class, new TemporalAccessorConverter(OffsetTime.class));
+
// Reference
defaultConverterMap.put(WeakReference.class, new ReferenceConverter(WeakReference.class));// since 3.0.8
defaultConverterMap.put(SoftReference.class, new ReferenceConverter(SoftReference.class));// since 3.0.8
@@ -386,18 +401,6 @@ public class ConverterRegistry implements Serializable{
defaultConverterMap.put(UUID.class, new UUIDConverter());// since 4.0.10
defaultConverterMap.put(StackTraceElement.class, new StackTraceElementConverter());// since 4.5.2
- // JDK8+
- try {
- Class> clazz;
- for (String className : Jdk8DateConverter.supportClassNames) {
- clazz = ClassUtil.loadClass(className);
- defaultConverterMap.put(clazz, new Jdk8DateConverter(clazz));// since 4.5.1
- }
- } catch (Exception e) {
- // ignore
- // 在使用jdk8以下版本时,其转换器自动跳过失效
- }
-
return this;
}
// ----------------------------------------------------------- Private method end
diff --git a/hutool-core/src/main/java/cn/hutool/core/convert/impl/Jdk8DateConverter.java b/hutool-core/src/main/java/cn/hutool/core/convert/impl/Jdk8DateConverter.java
deleted file mode 100644
index e3eede993..000000000
--- a/hutool-core/src/main/java/cn/hutool/core/convert/impl/Jdk8DateConverter.java
+++ /dev/null
@@ -1,130 +0,0 @@
-package cn.hutool.core.convert.impl;
-
-import cn.hutool.core.convert.AbstractConverter;
-import cn.hutool.core.util.ReflectUtil;
-
-import java.lang.reflect.Method;
-import java.time.Instant;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-
-/**
- * JDK8中新加入的java.time包对象解析转换器
- * 通过反射调用“parse方法”,支持的对象包括:
- *
- *
- * java.time.LocalDateTime
- * java.time.LocalDate
- * java.time.LocalTime
- * java.time.ZonedDateTime
- * java.time.OffsetDateTime
- * java.time.OffsetTime
- * java.time.Period
- * java.time.Instant
- *
- *
- * @author looly
- *
- */
-public class Jdk8DateConverter extends AbstractConverter