diff --git a/hutool-core/src/main/java/cn/hutool/core/convert/impl/NumberConverter.java b/hutool-core/src/main/java/cn/hutool/core/convert/impl/NumberConverter.java
index 040035e8e..97fca587f 100644
--- a/hutool-core/src/main/java/cn/hutool/core/convert/impl/NumberConverter.java
+++ b/hutool-core/src/main/java/cn/hutool/core/convert/impl/NumberConverter.java
@@ -29,9 +29,8 @@ import java.util.concurrent.atomic.AtomicLong;
*
java.math.BigDecimal
* java.math.BigInteger
*
- *
- * @author Looly
*
+ * @author Looly
*/
public class NumberConverter extends AbstractConverter {
private static final long serialVersionUID = 1L;
@@ -44,7 +43,7 @@ public class NumberConverter extends AbstractConverter {
/**
* 构造
- *
+ *
* @param clazz 需要转换的数字类型,默认 {@link Number}
*/
public NumberConverter(Class extends Number> clazz) {
@@ -60,8 +59,8 @@ public class NumberConverter extends AbstractConverter {
if (Byte.class == targetType) {
if (value instanceof Number) {
return ((Number) value).byteValue();
- } else if(value instanceof Boolean) {
- return BooleanUtil.toByteObj((Boolean)value);
+ } else if (value instanceof Boolean) {
+ return BooleanUtil.toByteObj((Boolean) value);
}
final String valueStr = convertToStr(value);
return StrUtil.isBlank(valueStr) ? null : Byte.valueOf(valueStr);
@@ -69,8 +68,8 @@ public class NumberConverter extends AbstractConverter {
} else if (Short.class == targetType) {
if (value instanceof Number) {
return ((Number) value).shortValue();
- } else if(value instanceof Boolean) {
- return BooleanUtil.toShortObj((Boolean)value);
+ } else if (value instanceof Boolean) {
+ return BooleanUtil.toShortObj((Boolean) value);
}
final String valueStr = convertToStr(value);
return StrUtil.isBlank(valueStr) ? null : Short.valueOf(valueStr);
@@ -78,15 +77,21 @@ public class NumberConverter extends AbstractConverter {
} else if (Integer.class == targetType) {
if (value instanceof Number) {
return ((Number) value).intValue();
- } else if(value instanceof Boolean) {
- return BooleanUtil.toInteger((Boolean)value);
+ } else if (value instanceof Boolean) {
+ return BooleanUtil.toInteger((Boolean) value);
+ } else if (value instanceof Date) {
+ return (int)((Date) value).getTime();
+ } else if (value instanceof Calendar) {
+ return (int)((Calendar) value).getTimeInMillis();
+ } else if (value instanceof TemporalAccessor) {
+ return (int)DateUtil.toInstant((TemporalAccessor) value).toEpochMilli();
}
final String valueStr = convertToStr(value);
return StrUtil.isBlank(valueStr) ? null : NumberUtil.parseInt(valueStr);
} else if (AtomicInteger.class == targetType) {
final Number number = convertInternal(value, Integer.class);
- if(null != number){
+ if (null != number) {
final AtomicInteger intValue = new AtomicInteger();
intValue.set(number.intValue());
return intValue;
@@ -95,8 +100,8 @@ public class NumberConverter extends AbstractConverter {
} else if (Long.class == targetType) {
if (value instanceof Number) {
return ((Number) value).longValue();
- } else if(value instanceof Boolean) {
- return BooleanUtil.toLongObj((Boolean)value);
+ } else if (value instanceof Boolean) {
+ return BooleanUtil.toLongObj((Boolean) value);
} else if (value instanceof Date) {
return ((Date) value).getTime();
} else if (value instanceof Calendar) {
@@ -109,7 +114,7 @@ public class NumberConverter extends AbstractConverter {
} else if (AtomicLong.class == targetType) {
final Number number = convertInternal(value, Long.class);
- if(null != number){
+ if (null != number) {
final AtomicLong longValue = new AtomicLong();
longValue.set(number.longValue());
return longValue;
@@ -118,8 +123,8 @@ public class NumberConverter extends AbstractConverter {
} else if (Float.class == targetType) {
if (value instanceof Number) {
return ((Number) value).floatValue();
- } else if(value instanceof Boolean) {
- return BooleanUtil.toFloatObj((Boolean)value);
+ } else if (value instanceof Boolean) {
+ return BooleanUtil.toFloatObj((Boolean) value);
}
final String valueStr = convertToStr(value);
return StrUtil.isBlank(valueStr) ? null : Float.valueOf(valueStr);
@@ -127,8 +132,8 @@ public class NumberConverter extends AbstractConverter {
} else if (Double.class == targetType) {
if (value instanceof Number) {
return ((Number) value).doubleValue();
- } else if(value instanceof Boolean) {
- return BooleanUtil.toDoubleObj((Boolean)value);
+ } else if (value instanceof Boolean) {
+ return BooleanUtil.toDoubleObj((Boolean) value);
}
final String valueStr = convertToStr(value);
return StrUtil.isBlank(valueStr) ? null : Double.valueOf(valueStr);
@@ -139,11 +144,11 @@ public class NumberConverter extends AbstractConverter {
} else if (BigInteger.class == targetType) {
return toBigInteger(value);
- }else if(Number.class == targetType){
+ } else if (Number.class == targetType) {
if (value instanceof Number) {
- return (Number)value;
- } else if(value instanceof Boolean) {
- return BooleanUtil.toInteger((Boolean)value);
+ return (Number) value;
+ } else if (value instanceof Boolean) {
+ return BooleanUtil.toInteger((Boolean) value);
}
final String valueStr = convertToStr(value);
return StrUtil.isBlank(valueStr) ? null : NumberUtil.parseNumber(valueStr);
@@ -156,7 +161,7 @@ public class NumberConverter extends AbstractConverter {
* 转换为BigDecimal
* 如果给定的值为空,或者转换失败,返回默认值
* 转换失败不会报错
- *
+ *
* @param value 被转换的值
* @return 结果
*/
@@ -167,8 +172,8 @@ public class NumberConverter extends AbstractConverter {
return new BigDecimal((Integer) value);
} else if (value instanceof BigInteger) {
return new BigDecimal((BigInteger) value);
- } else if(value instanceof Boolean) {
- return new BigDecimal((boolean)value ? 1 : 0);
+ } else if (value instanceof Boolean) {
+ return new BigDecimal((boolean) value ? 1 : 0);
}
//对于Double类型,先要转换为String,避免精度问题
@@ -183,15 +188,15 @@ public class NumberConverter extends AbstractConverter {
* 转换为BigInteger
* 如果给定的值为空,或者转换失败,返回默认值
* 转换失败不会报错
- *
+ *
* @param value 被转换的值
* @return 结果
*/
private BigInteger toBigInteger(Object value) {
if (value instanceof Long) {
return BigInteger.valueOf((Long) value);
- } else if(value instanceof Boolean) {
- return BigInteger.valueOf((boolean)value ? 1 : 0);
+ } else if (value instanceof Boolean) {
+ return BigInteger.valueOf((boolean) value ? 1 : 0);
}
final String valueStr = convertToStr(value);
if (StrUtil.isBlank(valueStr)) {
diff --git a/hutool-core/src/test/java/cn/hutool/core/convert/ConvertToNumberTest.java b/hutool-core/src/test/java/cn/hutool/core/convert/ConvertToNumberTest.java
index ed2b09b95..f8b30cf26 100644
--- a/hutool-core/src/test/java/cn/hutool/core/convert/ConvertToNumberTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/convert/ConvertToNumberTest.java
@@ -16,6 +16,14 @@ public class ConvertToNumberTest {
Assert.assertEquals(date.getTime(), dateLong.longValue());
}
+ @Test
+ public void dateToIntTest(){
+ final DateTime date = DateUtil.parse("2020-05-17 12:32:00");
+ final Integer dateInt = Convert.toInt(date);
+ assert date != null;
+ Assert.assertEquals((int)date.getTime(), dateInt.intValue());
+ }
+
@Test
public void dateToAtomicLongTest(){
final DateTime date = DateUtil.parse("2020-05-17 12:32:00");