admin管理员组

文章数量:1595878

要实现的功能:获取用户需要还书的时间(returnDate)和当前时间(now),计算两者之间的差值,每超过一天扣一块钱(30块封顶),如果用户金额小于0的时候该用户会被冻结。

一开始的时候使用Period.between(returnDate,now)

//获取用户需要还书的时间
LocalDate returnDate = user.getReturnDate();
//测试用的时间
LocalDate now = LocalDate.parse("2021-08-10");
Period period = Period.between(returnDate,now);
//扣款金额
BigDecimal delay = BigDecimal.ZERO;
if(period.getDays(0>=30){
    delay = new BigDecimal("30");
}else{
    delay = new BigDecimal(period.getDays());
}

通过这样计算的日期总是不正确,后来使用了.toEpochDay()方法才让天数变得正确。

//获取用户需要还书的时间
LocalDate returnDate = user.getReturnDate();
//测试用的时间
LocalDate now = LocalDate.of(2017, 9, 1);
//计算差值
long period = returnDate.toEpochDay()-now.toEpochDay();
//扣款金额
BigDecimal delay = BigDecimal.ZERO;

if(period>=30){
    delay = new BigDecimal("30");
}else{
    delay = new BigDecimal(period);
}
经过查询发现.getDays()只是获得年月日中日的差值,还有.getYears()和.getMonths()来分别获取年份和月份的差值。

本文标签: 方法LocalDatePeriodBuggetDays