| | |
| | | BigDecimal monthFloat = new BigDecimal(month) ; |
| | | |
| | | int yearDays = day - DateUtil.daysBetweenDates(DateUtil.addYearToDate(fromDate,year),fromDate) ; |
| | | if(yearDays>0){ |
| | | yearFloat = yearFloat.add(new BigDecimal(yearDays).divide(new BigDecimal(365), 2,RoundingMode.FLOOR)); |
| | | if(yearDays!=0){ |
| | | yearFloat = yearFloat.add(new BigDecimal(1.0*yearDays).divide(new BigDecimal(365.0), 15,RoundingMode.HALF_UP)); |
| | | } |
| | | int monthDays = day - DateUtil.daysBetweenDates(DateUtil.addMonthToDate(fromDate,month),fromDate) ; |
| | | if(monthDays>0){ |
| | | monthFloat = monthFloat.add(new BigDecimal(monthDays).divide(new BigDecimal(30), 2,RoundingMode.FLOOR)); |
| | | if(monthDays!=0){ |
| | | monthFloat = monthFloat.add(new BigDecimal(1.0*monthDays*12).divide(new BigDecimal(365.0), 15,RoundingMode.HALF_UP)); |
| | | } |
| | | return DateCompare.builder().day(day).month(month).year(year).yearFloat(yearFloat).monthFloat(monthFloat).yearDays(yearDays).monthDays(monthDays).build(); |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | DateCompare dateCompare = DateCompare.dayCompare(DateUtil.getDateFromString("2024-12-01 00:00:00"),DateUtil.getDateByString("2024-12-31 00:00:00") |
| | | ,DateUtil.getDateFromString("2024-12-01 00:00:00"),DateUtil.getDateFromString("2024-12-02 00:00:00")); |
| | | System.out.println(dateCompare.monthFloat); |
| | | System.out.println(dateCompare.yearFloat); |
| | | System.out.println(dateCompare.yearFloat.multiply(new BigDecimal(365.0))); |
| | | System.out.println(new BigDecimal(29.0).divide(new BigDecimal(365.0),12, RoundingMode.HALF_UP).multiply(new BigDecimal(365.0))); |
| | | } |
| | | public static DateCompare monthYearCompare(Date fromDate,Date toDate ){ |
| | | //开始时间往后延伸,除去有效时期 |
| | |
| | | BigDecimal monthFloat = new BigDecimal(month) ; |
| | | |
| | | int yearDays = day - DateUtil.daysBetweenDates(DateUtil.addYearToDate(fromDate,year),fromDate) ; |
| | | if(yearDays>0){ |
| | | yearFloat = yearFloat.add(new BigDecimal(yearDays).divide(new BigDecimal(365), 2,RoundingMode.FLOOR)); |
| | | if(yearDays!=0){ |
| | | yearFloat = yearFloat.add(new BigDecimal(1.0*yearDays).divide(new BigDecimal(365.0), 15,RoundingMode.HALF_UP)); |
| | | } |
| | | int monthDays = day - DateUtil.daysBetweenDates(DateUtil.addMonthToDate(fromDate,month),fromDate) ; |
| | | if(monthDays>0){ |
| | | monthFloat = monthFloat.add(new BigDecimal(monthDays).divide(new BigDecimal(30), 2,RoundingMode.FLOOR)); |
| | | if(monthDays!=0){ |
| | | monthFloat = monthFloat.add(new BigDecimal(1.0*monthDays*12).divide(new BigDecimal(365.0), 15,RoundingMode.HALF_UP)); |
| | | } |
| | | return DateCompare.builder().day(day).month(month).year(year).yearFloat(yearFloat).monthFloat(monthFloat).yearDays(yearDays).monthDays(monthDays).build(); |
| | | } |