fix dayOfMonth

This commit is contained in:
Looly 2022-08-30 23:37:03 +08:00
parent 41e9626692
commit b495a50f28
3 changed files with 12 additions and 9 deletions

View File

@ -3,15 +3,18 @@ package cn.hutool.core.date;
import cn.hutool.core.date.format.GlobalCustomFormat; import cn.hutool.core.date.format.GlobalCustomFormat;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import java.time.DayOfWeek;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.Month; import java.time.Month;
import java.time.MonthDay;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import java.time.OffsetTime; import java.time.OffsetTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
import java.time.chrono.Era;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalAccessor;
import java.time.temporal.TemporalField; import java.time.temporal.TemporalField;
@ -94,7 +97,7 @@ public class TemporalAccessorUtil extends TemporalUtil{
return null; return null;
} }
if(time instanceof Month){ if(time instanceof DayOfWeek || time instanceof java.time.Month || time instanceof Era || time instanceof MonthDay){
return time.toString(); return time.toString();
} }
@ -120,6 +123,10 @@ public class TemporalAccessorUtil extends TemporalUtil{
public static long toEpochMilli(TemporalAccessor temporalAccessor) { public static long toEpochMilli(TemporalAccessor temporalAccessor) {
if(temporalAccessor instanceof Month){ if(temporalAccessor instanceof Month){
return ((Month) temporalAccessor).getValue(); 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(); return toInstant(temporalAccessor).toEpochMilli();
} }

View File

@ -22,9 +22,7 @@ import cn.hutool.json.JSONUtil;
import java.io.IOException; import java.io.IOException;
import java.io.Writer; import java.io.Writer;
import java.time.DayOfWeek;
import java.time.MonthDay; import java.time.MonthDay;
import java.time.chrono.Era;
import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalAccessor;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
@ -266,12 +264,10 @@ public class JSONWriter extends Writer {
writeNumberValue((Number) value); writeNumberValue((Number) value);
} else if (value instanceof Date || value instanceof Calendar || value instanceof TemporalAccessor) { } else if (value instanceof Date || value instanceof Calendar || value instanceof TemporalAccessor) {
// issue#2572@Github // issue#2572@Github
if(value instanceof TemporalAccessor){ if(value instanceof MonthDay){
if(value instanceof DayOfWeek || value instanceof Era || value instanceof MonthDay){
writeStrValue(value.toString()); writeStrValue(value.toString());
return this; return this;
} }
}
final String format = (null == config) ? null : config.getDateFormat(); final String format = (null == config) ? null : config.getDateFormat();
writeRaw(formatDate(value, format)); writeRaw(formatDate(value, format));

View File

@ -19,7 +19,7 @@ public class Issue2572Test {
weeks.add(DayOfWeek.MONDAY); weeks.add(DayOfWeek.MONDAY);
final JSONObject obj = new JSONObject(); final JSONObject obj = new JSONObject();
obj.set("weeks", weeks); obj.set("weeks", weeks);
Assert.assertEquals("{\"weeks\":[\"MONDAY\"]}", obj.toString()); Assert.assertEquals("{\"weeks\":[1]}", obj.toString());
final Map<String, Set<DayOfWeek>> monthDays1 = obj.toBean(new TypeReference<Map<String, Set<DayOfWeek>>>() { final Map<String, Set<DayOfWeek>> monthDays1 = obj.toBean(new TypeReference<Map<String, Set<DayOfWeek>>>() {
}); });