实际开发中的案例,需要将日期格式为String类型的"2018-11-13",然后转为BigDecimal(8,2)类型的20181113存入数据库。查询时再将数据转为String类型格式展示。
1、先定义工具类:
(如果没有传入生失效时间,这自动设置一个默认值;如果有则,不需要。)
/**
* @Description 工具类
* Create at: 2018年11月21日 下午4:41:54
*/
public class CommonUtils {
private final static String HYPHEN = "-";
/**
* 默认失效时间9999-12-31
*/
public static BigDecimal getDefaultInvalidTime() {
// 获取String类型的时间
String defaultInvalidTime = "9999-12-31";
return strToBigDecimal(defaultInvalidTime);
}
/**
* 默认生效时间 为当前时间
*/
public static BigDecimal getNowDate() {
// 我要获取当前的日期
Date date = new Date();
// 设置要获取到什么样的时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 获取String类型的时间
String createdate = sdf.format(date);
return strToBigDecimal(createdate);
}
/**
* 生效日期,失效日期 String->BigDecimal
*
* @param effectiveDate
* @return BigDecimal
*/
public static BigDecimal strToBigDecimal(String effectiveDate) {
StringBuilder sb = new StringBuilder();
String[] splitWithHyphen = effectiveDate.split(HYPHEN);
for (String item : splitWithHyphen) {
sb.append(item);
}
String newEffectiveDate = sb.toString();
BigDecimal bd = new BigDecimal(newEffectiveDate);
return bd;
}
/**
* 生效日期,失效日期 BigDecimal->String
*
* @param effectiveDate
* @return String
*/
public static String bigDecimalToStr(BigDecimal effectiveDate) {
String strEffectiveDate = effectiveDate.toString();
StringBuilder sb = new StringBuilder();
sb.append(strEffectiveDate);
sb.insert(4, HYPHEN);
sb.insert(7, HYPHEN);
return sb.toString();
}
}
2、调用(伪代码)
/**
*String->BigDecimal
* 入库
*/
public void demo(Param param){
//传入的参数param
// 设置默认生失效时间
BigDecimal effectiveStartDate = null;
BigDecimal effectiveEndDate = null;
try {
effectiveStartDate = StringUtils.isBlank(param.getEffectiveStartDate()) ? CommonUtils.getNowDate()
: CommonUtils.strToBigDecimal(param.getEffectiveStartDate());
effectiveEndDate = StringUtils.isBlank(param.getEffectiveEndDate()) ? CommonUtils.getDefaultInvalidTime()
: CommonUtils.strToBigDecimal(param.getEffectiveEndDate());
} catch (Exception e) {
throw new ApplicationServiceException("生失效时间转换异常");
}
}
/**
*BigDecimal ->String
* 查询展示
*/
public void demo01(Vo vo){
// 日期转换BigDecimal->String
vo.setEffectiveStartDateName(CommonUtils.bigDecimalToStr(vo.getEffectiveStartDate()));
vo.setEffectiveEndDateName(CommonUtils.bigDecimalToStr(vo.getEffectiveEndDate()));
}
3、效果
一般都要判断失效时间-生效时间>=0 .视具体的业务来定。