mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
add date to long support for Convert
This commit is contained in:
parent
200dc6c5ea
commit
a0b1a33654
@ -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)) {
|
||||||
|
@ -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");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user