String类型的日期与BigDecimal类型相互转化

实际开发中的案例,需要将日期格式为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 .视具体的业务来定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值