package com.qianwen.core.tool.metadata.types; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Date; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.qianwen.core.tool.metadata.Converter; import com.qianwen.core.tool.metadata.DataType; import com.qianwen.core.tool.metadata.ValidateResult; import com.qianwen.core.tool.time.DateFormatter; import com.qianwen.core.tool.utils.Func; import com.qianwen.core.tool.utils.StringPool; /* loaded from: blade-core-tool-9.3.0.0-SNAPSHOT.jar:org/springblade/core/tool/metadata/types/DateTimeType.class */ public class DateTimeType extends AbstractType implements DataType, Converter { public static final String ID = "date"; public static final String TIMESTAMP_FORMAT = "timestamp"; private String format = TIMESTAMP_FORMAT; private ZoneId zoneId = ZoneId.systemDefault(); private DateTimeFormatter formatter; private static final Logger log = LoggerFactory.getLogger(DateTimeType.class); public static final DateTimeType GLOBAL = new DateTimeType(); public void setFormat(final String format) { this.format = format; } public void setZoneId(final ZoneId zoneId) { this.zoneId = zoneId; } public void setFormatter(final DateTimeFormatter formatter) { this.formatter = formatter; } static { DateFormatter.supportFormatter.add(new ISODateTimeFormatter()); } public String getFormat() { return this.format; } public ZoneId getZoneId() { return this.zoneId; } public DateTimeType timeZone(ZoneId zoneId) { this.zoneId = zoneId; return this; } public DateTimeType format(String format) { this.format = format; getFormatter(); return this; } @Override // org.springblade.core.tool.metadata.Metadata public String getId() { return ID; } @Override // org.springblade.core.tool.metadata.Metadata public String getName() { return "时间"; } protected DateTimeFormatter getFormatter() { if (this.formatter == null && !TIMESTAMP_FORMAT.equals(this.format)) { this.formatter = DateTimeFormatter.ofPattern(this.format); } return this.formatter; } @Override // org.springblade.core.tool.metadata.DataType public ValidateResult validate(Object value) { Object value2 = convert(value); if (value2 == null) { return ValidateResult.fail("不是合法的时间格式"); } return ValidateResult.success(value2); } @Override // org.springblade.core.tool.metadata.FormatSupport public String format(Object value) { try { if (TIMESTAMP_FORMAT.equals(this.format)) { return String.valueOf(convert(value).getTime()); } Date dateValue = convert(value); if (dateValue == null) { return StringPool.EMPTY; } return LocalDateTime.ofInstant(dateValue.toInstant(), this.zoneId).format(getFormatter()); } catch (Exception e) { log.error(e.getMessage(), e); return StringPool.EMPTY; } } /* JADX WARN: Can't rename method to resolve collision */ @Override // org.springblade.core.tool.metadata.Converter public Date convert(Object value) { if (value instanceof Instant) { return Date.from((Instant) value); } if (value instanceof LocalDateTime) { return Date.from(((LocalDateTime) value).atZone(this.zoneId).toInstant()); } if (value instanceof Date) { return (Date) value; } if (value instanceof Number) { return new Date(((Number) value).longValue()); } if (value instanceof String) { if (Func.isNumeric(value.toString())) { return new Date(Long.parseLong((String) value)); } Date data = DateFormatter.fromString((String) value); if (data != null) { return data; } DateTimeFormatter formatter = getFormatter(); if (null == formatter) { throw new IllegalArgumentException("unsupported date format:" + value); } return Date.from(LocalDateTime.parse((String) value, formatter).atZone(this.zoneId).toInstant()); } throw new IllegalArgumentException("can not format datetime :" + value); } }