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
版权声明:本文标题:Period.between()和LocalDate的getDays()方法造成的bug 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1728237092a1150545.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论