add date to long support for Convert

This commit is contained in:
Looly 2020-05-17 19:26:40 +08:00
parent 200dc6c5ea
commit a0b1a33654
2 changed files with 40 additions and 27 deletions

View File

@ -31,7 +31,6 @@ import java.util.concurrent.atomic.AtomicLong;
* </ul> * </ul>
* *
* @author Looly * @author Looly
*
*/ */
public class NumberConverter extends AbstractConverter<Number> { public class NumberConverter extends AbstractConverter<Number> {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -60,8 +59,8 @@ public class NumberConverter extends AbstractConverter<Number> {
if (Byte.class == targetType) { if (Byte.class == targetType) {
if (value instanceof Number) { if (value instanceof Number) {
return ((Number) value).byteValue(); return ((Number) value).byteValue();
} else if(value instanceof Boolean) { } else if (value instanceof Boolean) {
return BooleanUtil.toByteObj((Boolean)value); return BooleanUtil.toByteObj((Boolean) value);
} }
final String valueStr = convertToStr(value); final String valueStr = convertToStr(value);
return StrUtil.isBlank(valueStr) ? null : Byte.valueOf(valueStr); return StrUtil.isBlank(valueStr) ? null : Byte.valueOf(valueStr);
@ -69,8 +68,8 @@ public class NumberConverter extends AbstractConverter<Number> {
} else if (Short.class == targetType) { } else if (Short.class == targetType) {
if (value instanceof Number) { if (value instanceof Number) {
return ((Number) value).shortValue(); return ((Number) value).shortValue();
} else if(value instanceof Boolean) { } else if (value instanceof Boolean) {
return BooleanUtil.toShortObj((Boolean)value); return BooleanUtil.toShortObj((Boolean) value);
} }
final String valueStr = convertToStr(value); final String valueStr = convertToStr(value);
return StrUtil.isBlank(valueStr) ? null : Short.valueOf(valueStr); return StrUtil.isBlank(valueStr) ? null : Short.valueOf(valueStr);
@ -78,15 +77,21 @@ public class NumberConverter extends AbstractConverter<Number> {
} else if (Integer.class == targetType) { } else if (Integer.class == targetType) {
if (value instanceof Number) { if (value instanceof Number) {
return ((Number) value).intValue(); return ((Number) value).intValue();
} else if(value instanceof Boolean) { } else if (value instanceof Boolean) {
return BooleanUtil.toInteger((Boolean)value); 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); final String valueStr = convertToStr(value);
return StrUtil.isBlank(valueStr) ? null : NumberUtil.parseInt(valueStr); return StrUtil.isBlank(valueStr) ? null : NumberUtil.parseInt(valueStr);
} else if (AtomicInteger.class == targetType) { } else if (AtomicInteger.class == targetType) {
final Number number = convertInternal(value, Integer.class); final Number number = convertInternal(value, Integer.class);
if(null != number){ if (null != number) {
final AtomicInteger intValue = new AtomicInteger(); final AtomicInteger intValue = new AtomicInteger();
intValue.set(number.intValue()); intValue.set(number.intValue());
return intValue; return intValue;
@ -95,8 +100,8 @@ public class NumberConverter extends AbstractConverter<Number> {
} else if (Long.class == targetType) { } else if (Long.class == targetType) {
if (value instanceof Number) { if (value instanceof Number) {
return ((Number) value).longValue(); return ((Number) value).longValue();
} else if(value instanceof Boolean) { } else if (value instanceof Boolean) {
return BooleanUtil.toLongObj((Boolean)value); return BooleanUtil.toLongObj((Boolean) value);
} else if (value instanceof Date) { } else if (value instanceof Date) {
return ((Date) value).getTime(); return ((Date) value).getTime();
} else if (value instanceof Calendar) { } else if (value instanceof Calendar) {
@ -109,7 +114,7 @@ public class NumberConverter extends AbstractConverter<Number> {
} else if (AtomicLong.class == targetType) { } else if (AtomicLong.class == targetType) {
final Number number = convertInternal(value, Long.class); final Number number = convertInternal(value, Long.class);
if(null != number){ if (null != number) {
final AtomicLong longValue = new AtomicLong(); final AtomicLong longValue = new AtomicLong();
longValue.set(number.longValue()); longValue.set(number.longValue());
return longValue; return longValue;
@ -118,8 +123,8 @@ public class NumberConverter extends AbstractConverter<Number> {
} else if (Float.class == targetType) { } else if (Float.class == targetType) {
if (value instanceof Number) { if (value instanceof Number) {
return ((Number) value).floatValue(); return ((Number) value).floatValue();
} else if(value instanceof Boolean) { } else if (value instanceof Boolean) {
return BooleanUtil.toFloatObj((Boolean)value); return BooleanUtil.toFloatObj((Boolean) value);
} }
final String valueStr = convertToStr(value); final String valueStr = convertToStr(value);
return StrUtil.isBlank(valueStr) ? null : Float.valueOf(valueStr); return StrUtil.isBlank(valueStr) ? null : Float.valueOf(valueStr);
@ -127,8 +132,8 @@ public class NumberConverter extends AbstractConverter<Number> {
} else if (Double.class == targetType) { } else if (Double.class == targetType) {
if (value instanceof Number) { if (value instanceof Number) {
return ((Number) value).doubleValue(); return ((Number) value).doubleValue();
} else if(value instanceof Boolean) { } else if (value instanceof Boolean) {
return BooleanUtil.toDoubleObj((Boolean)value); return BooleanUtil.toDoubleObj((Boolean) value);
} }
final String valueStr = convertToStr(value); final String valueStr = convertToStr(value);
return StrUtil.isBlank(valueStr) ? null : Double.valueOf(valueStr); return StrUtil.isBlank(valueStr) ? null : Double.valueOf(valueStr);
@ -139,11 +144,11 @@ public class NumberConverter extends AbstractConverter<Number> {
} else if (BigInteger.class == targetType) { } else if (BigInteger.class == targetType) {
return toBigInteger(value); return toBigInteger(value);
}else if(Number.class == targetType){ } else if (Number.class == targetType) {
if (value instanceof Number) { if (value instanceof Number) {
return (Number)value; return (Number) value;
} else if(value instanceof Boolean) { } else if (value instanceof Boolean) {
return BooleanUtil.toInteger((Boolean)value); return BooleanUtil.toInteger((Boolean) value);
} }
final String valueStr = convertToStr(value); final String valueStr = convertToStr(value);
return StrUtil.isBlank(valueStr) ? null : NumberUtil.parseNumber(valueStr); return StrUtil.isBlank(valueStr) ? null : NumberUtil.parseNumber(valueStr);
@ -167,8 +172,8 @@ public class NumberConverter extends AbstractConverter<Number> {
return new BigDecimal((Integer) value); return new BigDecimal((Integer) value);
} else if (value instanceof BigInteger) { } else if (value instanceof BigInteger) {
return new BigDecimal((BigInteger) value); return new BigDecimal((BigInteger) value);
} else if(value instanceof Boolean) { } else if (value instanceof Boolean) {
return new BigDecimal((boolean)value ? 1 : 0); return new BigDecimal((boolean) value ? 1 : 0);
} }
//对于Double类型先要转换为String避免精度问题 //对于Double类型先要转换为String避免精度问题
@ -190,8 +195,8 @@ public class NumberConverter extends AbstractConverter<Number> {
private BigInteger toBigInteger(Object value) { private BigInteger toBigInteger(Object value) {
if (value instanceof Long) { if (value instanceof Long) {
return BigInteger.valueOf((Long) value); return BigInteger.valueOf((Long) value);
} else if(value instanceof Boolean) { } else if (value instanceof Boolean) {
return BigInteger.valueOf((boolean)value ? 1 : 0); return BigInteger.valueOf((boolean) value ? 1 : 0);
} }
final String valueStr = convertToStr(value); final String valueStr = convertToStr(value);
if (StrUtil.isBlank(valueStr)) { if (StrUtil.isBlank(valueStr)) {

View File

@ -16,6 +16,14 @@ public class ConvertToNumberTest {
Assert.assertEquals(date.getTime(), dateLong.longValue()); 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 @Test
public void dateToAtomicLongTest(){ public void dateToAtomicLongTest(){
final DateTime date = DateUtil.parse("2020-05-17 12:32:00"); final DateTime date = DateUtil.parse("2020-05-17 12:32:00");