From 0036ad8db72543eb04874962403bca7582a84e9f Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期二, 03 十二月 2024 19:03:48 +0800 Subject: [PATCH] 开发更新 --- server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java | 74 +++++++++++++++++++++++++++---------- 1 files changed, 54 insertions(+), 20 deletions(-) diff --git a/server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java b/server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java index 1335d95..630334d 100644 --- a/server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java +++ b/server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java @@ -39,16 +39,17 @@ * 浠ュ勾涓哄崟浣嶇浉宸负锛�6骞� * 浠ユ湀涓哄崟浣嶇浉宸负锛�73涓湀 * 浠ユ棩涓哄崟浣嶇浉宸负锛�2220澶� - * @param fromDate - * @param toDate + * @param toDateOrigin * @return */ - public static DateCompare dayCompare(Date fromDate,Date toDate,Date freeStart,Date freeEnd){ + public static DateCompare dayCompare(Date fromDateOrigin,Date toDateOrigin,Date freeStart,Date freeEnd){ //寮�濮嬫椂闂村線鍚庡欢浼革紝闄ゅ幓鏈夋晥鏃舵湡 - fromDate = DateUtil.addDaysToDate(fromDate,getIntersectingDays(fromDate,toDate,freeStart,freeEnd)); - if(toDate.getTime()<= fromDate.getTime()){ + Date fromDate = DateUtil.addDaysToDate(fromDateOrigin,getIntersectingDays(fromDateOrigin,DateUtil.addDaysToDate(toDateOrigin,1),freeStart,DateUtil.addDaysToDate(freeEnd,1))); + if(toDateOrigin.getTime()< fromDate.getTime()){ return DateCompare.builder().day(0).month(0).year(0).yearFloat(new BigDecimal(0)).monthFloat(new BigDecimal(0)).build(); } + Date toDate =DateUtil.addDaysToDate(toDateOrigin, 1); +// toDate = DateUtil.addDaysToDate(toDate,1);//鍖呭惈鎴鏃ユ湡 Calendar from = Calendar.getInstance(); from.setTime(fromDate); Calendar to = Calendar.getInstance(); @@ -62,22 +63,45 @@ int year = toYear - fromYear; int month = toYear * 12 + toMonth - (fromYear * 12 + fromMonth); - int day = (int) ((to.getTimeInMillis() - from.getTimeInMillis()) / (24 * 3600 * 1000)); + int day = DateUtil.daysBetweenDates( toDate,fromDate); BigDecimal yearFloat = new BigDecimal(year) ; 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)); + int yearDays = day - (DateUtil.daysBetweenDates(DateUtil.addYearToDate(fromDate,year),fromDate)); + if(yearDays!=0){ + if(yearDays <0){ + year = year-1; + yearFloat = new BigDecimal(year) ; + yearDays =DateUtil.daysBetweenDates(toDate,DateUtil.addYearToDate(fromDate,year)); + } + 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)); + int monthDays = day - (DateUtil.daysBetweenDates(DateUtil.addMonthToDate(fromDate,month),fromDate)) ; + if(monthDays!=0){ + if(monthDays <0){ + month = month-1; + monthFloat = new BigDecimal(month) ; + monthDays =DateUtil.daysBetweenDates(toDate,DateUtil.addMonthToDate(fromDate,month)); + } + 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 DateCompare monthYearCompare(Date fromDate,Date toDate ){ + + public static void main(String[] args) { + DateCompare dateCompare = DateCompare.monthYearCompare(DateUtil.getDateFromString("2025-06-03 00:00:00"),DateUtil.getDateByString("2025-09-02 00:00:00") ); + System.out.println(dateCompare.day); + System.out.println(dateCompare.monthDays); + System.out.println(dateCompare.month); + System.out.println(dateCompare.monthFloat); + System.out.println("=========year============="); + System.out.println(dateCompare.yearDays); + System.out.println(dateCompare.year); + System.out.println(dateCompare.yearFloat); + } + public static DateCompare monthYearCompare(Date fromDate,Date toDateOrigin ){ //寮�濮嬫椂闂村線鍚庡欢浼革紝闄ゅ幓鏈夋晥鏃舵湡 + Date toDate =DateUtil.addDaysToDate(toDateOrigin, 1); Calendar from = Calendar.getInstance(); from.setTime(fromDate); Calendar to = Calendar.getInstance(); @@ -95,13 +119,23 @@ BigDecimal yearFloat = new BigDecimal(year) ; 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)); + int yearDays = day - (DateUtil.daysBetweenDates(DateUtil.addYearToDate(fromDate,year),fromDate)); + if(yearDays!=0){ + if(yearDays <0){ + year = year-1; + yearFloat = new BigDecimal(year) ; + yearDays =DateUtil.daysBetweenDates(toDate,DateUtil.addYearToDate(fromDate,year)); + } + 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)); + int monthDays = day - (DateUtil.daysBetweenDates(DateUtil.addMonthToDate(fromDate,month),fromDate)) ; + if(monthDays!=0){ + if(monthDays <0){ + month = month-1; + monthFloat = new BigDecimal(month) ; + monthDays =DateUtil.daysBetweenDates(toDate,DateUtil.addMonthToDate(fromDate,month)); + } + 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(); } @@ -110,7 +144,7 @@ Date earlierStart = DateUtil.daysBetweenDates(start1,start2)>0? start1 : start2; Date laterEnd = DateUtil.daysBetweenDates(end2,end1)>0 ? end1 : end2; - int days =DateUtil.daysBetweenDates(laterEnd,earlierStart ); + int days =DateUtil.daysBetweenDates(laterEnd,earlierStart); return days>0?days:0 ; } -- Gitblit v1.9.3