diff --git a/hutool-core/src/main/java/cn/hutool/core/date/TemporalAccessorUtil.java b/hutool-core/src/main/java/cn/hutool/core/date/TemporalAccessorUtil.java index ae3975aa4..61078c424 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/TemporalAccessorUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/TemporalAccessorUtil.java @@ -3,15 +3,18 @@ package cn.hutool.core.date; import cn.hutool.core.date.format.GlobalCustomFormat; import cn.hutool.core.util.StrUtil; +import java.time.DayOfWeek; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.Month; +import java.time.MonthDay; import java.time.OffsetDateTime; import java.time.OffsetTime; import java.time.ZoneId; import java.time.ZonedDateTime; +import java.time.chrono.Era; import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalField; @@ -94,7 +97,7 @@ public class TemporalAccessorUtil extends TemporalUtil{ return null; } - if(time instanceof Month){ + if(time instanceof DayOfWeek || time instanceof java.time.Month || time instanceof Era || time instanceof MonthDay){ return time.toString(); } @@ -120,6 +123,10 @@ public class TemporalAccessorUtil extends TemporalUtil{ public static long toEpochMilli(TemporalAccessor temporalAccessor) { if(temporalAccessor instanceof Month){ return ((Month) temporalAccessor).getValue(); + } else if(temporalAccessor instanceof DayOfWeek){ + return ((DayOfWeek) temporalAccessor).getValue(); + } else if(temporalAccessor instanceof Era){ + return ((Era) temporalAccessor).getValue(); } return toInstant(temporalAccessor).toEpochMilli(); } diff --git a/hutool-json/src/main/java/cn/hutool/json/serialize/JSONWriter.java b/hutool-json/src/main/java/cn/hutool/json/serialize/JSONWriter.java index 64ab4ad6a..5994a7451 100755 --- a/hutool-json/src/main/java/cn/hutool/json/serialize/JSONWriter.java +++ b/hutool-json/src/main/java/cn/hutool/json/serialize/JSONWriter.java @@ -22,9 +22,7 @@ import cn.hutool.json.JSONUtil; import java.io.IOException; import java.io.Writer; -import java.time.DayOfWeek; import java.time.MonthDay; -import java.time.chrono.Era; import java.time.temporal.TemporalAccessor; import java.util.Calendar; import java.util.Date; @@ -266,11 +264,9 @@ public class JSONWriter extends Writer { writeNumberValue((Number) value); } else if (value instanceof Date || value instanceof Calendar || value instanceof TemporalAccessor) { // issue#2572@Github - if(value instanceof TemporalAccessor){ - if(value instanceof DayOfWeek || value instanceof Era || value instanceof MonthDay){ - writeStrValue(value.toString()); - return this; - } + if(value instanceof MonthDay){ + writeStrValue(value.toString()); + return this; } final String format = (null == config) ? null : config.getDateFormat(); diff --git a/hutool-json/src/test/java/cn/hutool/json/Issue2572Test.java b/hutool-json/src/test/java/cn/hutool/json/Issue2572Test.java index 9ebcea653..ebceefe19 100755 --- a/hutool-json/src/test/java/cn/hutool/json/Issue2572Test.java +++ b/hutool-json/src/test/java/cn/hutool/json/Issue2572Test.java @@ -19,7 +19,7 @@ public class Issue2572Test { weeks.add(DayOfWeek.MONDAY); final JSONObject obj = new JSONObject(); obj.set("weeks", weeks); - Assert.assertEquals("{\"weeks\":[\"MONDAY\"]}", obj.toString()); + Assert.assertEquals("{\"weeks\":[1]}", obj.toString()); final Map> monthDays1 = obj.toBean(new TypeReference>>() { });