|
|
@@ -11,7 +11,7 @@ import java.util.Date;
|
|
|
|
|
|
/**
|
|
|
* 日期转换器
|
|
|
- *
|
|
|
+ *
|
|
|
* @author Looly
|
|
|
*
|
|
|
*/
|
|
|
@@ -24,7 +24,7 @@ public class DateConverter extends AbstractConverter<java.util.Date> {
|
|
|
|
|
|
/**
|
|
|
* 构造
|
|
|
- *
|
|
|
+ *
|
|
|
* @param targetType 目标类型
|
|
|
*/
|
|
|
public DateConverter(Class<? extends java.util.Date> targetType) {
|
|
|
@@ -33,7 +33,7 @@ public class DateConverter extends AbstractConverter<java.util.Date> {
|
|
|
|
|
|
/**
|
|
|
* 构造
|
|
|
- *
|
|
|
+ *
|
|
|
* @param targetType 目标类型
|
|
|
* @param format 日期格式
|
|
|
*/
|
|
|
@@ -44,7 +44,7 @@ public class DateConverter extends AbstractConverter<java.util.Date> {
|
|
|
|
|
|
/**
|
|
|
* 获取日期格式
|
|
|
- *
|
|
|
+ *
|
|
|
* @return 设置日期格式
|
|
|
*/
|
|
|
public String getFormat() {
|
|
|
@@ -53,7 +53,7 @@ public class DateConverter extends AbstractConverter<java.util.Date> {
|
|
|
|
|
|
/**
|
|
|
* 设置日期格式
|
|
|
- *
|
|
|
+ *
|
|
|
* @param format 日期格式
|
|
|
*/
|
|
|
public void setFormat(String format) {
|
|
|
@@ -62,50 +62,75 @@ public class DateConverter extends AbstractConverter<java.util.Date> {
|
|
|
|
|
|
@Override
|
|
|
protected java.util.Date convertInternal(Object value) {
|
|
|
- Long mills = null;
|
|
|
- if (value instanceof Calendar) {
|
|
|
- // Handle Calendar
|
|
|
- mills = ((Calendar) value).getTimeInMillis();
|
|
|
+ if (value instanceof TemporalAccessor) {
|
|
|
+ return wrap(DateUtil.date((TemporalAccessor) value));
|
|
|
+ } else if (value instanceof Calendar) {
|
|
|
+ return wrap(DateUtil.date((Calendar) value));
|
|
|
} else if (value instanceof Number) {
|
|
|
- // Handle Number
|
|
|
- mills = ((Number) value).longValue();
|
|
|
- }else if (value instanceof TemporalAccessor) {
|
|
|
- return DateUtil.date((TemporalAccessor) value);
|
|
|
+ return wrap(((Number) value).longValue());
|
|
|
} else {
|
|
|
// 统一按照字符串处理
|
|
|
final String valueStr = convertToStr(value);
|
|
|
- Date date = null;
|
|
|
- try {
|
|
|
- date = StrUtil.isBlank(this.format) //
|
|
|
- ? DateUtil.parse(valueStr) //
|
|
|
- : DateUtil.parse(valueStr, this.format);
|
|
|
- } catch (Exception e) {
|
|
|
- // Ignore Exception
|
|
|
- }
|
|
|
+ final Date date = StrUtil.isBlank(this.format) //
|
|
|
+ ? DateUtil.parse(valueStr) //
|
|
|
+ : DateUtil.parse(valueStr, this.format);
|
|
|
if(null != date){
|
|
|
- mills = date.getTime();
|
|
|
+ return wrap(date);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (null == mills) {
|
|
|
- return null;
|
|
|
+ throw new UnsupportedOperationException(StrUtil.format("Unsupport Date type: {}", this.targetType.getName()));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * java.util.Date转为子类型
|
|
|
+ * @param date Date
|
|
|
+ * @return 目标类型对象
|
|
|
+ */
|
|
|
+ private java.util.Date wrap(java.util.Date date){
|
|
|
+ // 返回指定类型
|
|
|
+ if (java.util.Date.class == targetType) {
|
|
|
+ return date;
|
|
|
+ }
|
|
|
+ if (DateTime.class == targetType) {
|
|
|
+ return DateUtil.date(date);
|
|
|
+ }
|
|
|
+ if (java.sql.Date.class == targetType) {
|
|
|
+ return new java.sql.Date(date.getTime());
|
|
|
}
|
|
|
+ if (java.sql.Time.class == targetType) {
|
|
|
+ return new java.sql.Time(date.getTime());
|
|
|
+ }
|
|
|
+ if (java.sql.Timestamp.class == targetType) {
|
|
|
+ return new java.sql.Timestamp(date.getTime());
|
|
|
+ }
|
|
|
+
|
|
|
+ throw new UnsupportedOperationException(StrUtil.format("Unsupport Date type: {}", this.targetType.getName()));
|
|
|
+ }
|
|
|
|
|
|
+ /**
|
|
|
+ * java.util.Date转为子类型
|
|
|
+ * @param mills Date
|
|
|
+ * @return 目标类型对象
|
|
|
+ */
|
|
|
+ private java.util.Date wrap(long mills){
|
|
|
// 返回指定类型
|
|
|
if (java.util.Date.class == targetType) {
|
|
|
- return new java.util.Date(mills);
|
|
|
+ return new Date(mills);
|
|
|
}
|
|
|
if (DateTime.class == targetType) {
|
|
|
- return new DateTime(mills);
|
|
|
- } else if (java.sql.Date.class == targetType) {
|
|
|
+ return DateUtil.date(mills);
|
|
|
+ }
|
|
|
+ if (java.sql.Date.class == targetType) {
|
|
|
return new java.sql.Date(mills);
|
|
|
- } else if (java.sql.Time.class == targetType) {
|
|
|
+ }
|
|
|
+ if (java.sql.Time.class == targetType) {
|
|
|
return new java.sql.Time(mills);
|
|
|
- } else if (java.sql.Timestamp.class == targetType) {
|
|
|
+ }
|
|
|
+ if (java.sql.Timestamp.class == targetType) {
|
|
|
return new java.sql.Timestamp(mills);
|
|
|
}
|
|
|
|
|
|
throw new UnsupportedOperationException(StrUtil.format("Unsupport Date type: {}", this.targetType.getName()));
|
|
|
}
|
|
|
-
|
|
|
}
|