|  |  |  | 
|---|
|  |  |  | package com.doumee.core.utils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.math.BigDecimal; | 
|---|
|  |  |  | import java.math.RoundingMode; | 
|---|
|  |  |  | import java.sql.Timestamp; | 
|---|
|  |  |  | import java.text.DateFormat; | 
|---|
|  |  |  | import java.text.DateFormatSymbols; | 
|---|
|  |  |  | import java.text.ParseException; | 
|---|
|  |  |  | import java.text.SimpleDateFormat; | 
|---|
|  |  |  | import java.time.LocalDate; | 
|---|
|  |  |  | import java.time.Period; | 
|---|
|  |  |  | import java.time.ZoneId; | 
|---|
|  |  |  | import java.util.Calendar; | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.Enumeration; | 
|---|
|  |  |  | 
|---|
|  |  |  | calo.setTime(oldDate); | 
|---|
|  |  |  | caln.setTime(newDate); | 
|---|
|  |  |  | if(type==0||type==1){ | 
|---|
|  |  |  | return    calculateDaysBetweenDates(caln, calo) ; | 
|---|
|  |  |  | return    calculateDaysBetweenDates(caln, calo)  + 1 ; | 
|---|
|  |  |  | }else if(type==2){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | int day = caln.get(Calendar.DATE); | 
|---|
|  |  |  | 
|---|
|  |  |  | return calendar.getTime(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取指定日期的下个月第一天 | 
|---|
|  |  |  | * @param date | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static Date getNextMonthFirst(Date date){ | 
|---|
|  |  |  | Calendar calendar = Calendar.getInstance(); | 
|---|
|  |  |  | calendar.setTime(date); | 
|---|
|  |  |  | calendar.add(Calendar.MONTH, 1); // 将日历的月份增加1 | 
|---|
|  |  |  | calendar.set(Calendar.DAY_OF_MONTH, 1); // 设置为下个月的第一天 | 
|---|
|  |  |  | return calendar.getTime(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static String afterDateToStr(Integer days){ | 
|---|
|  |  |  | Date date = new Date(); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 拼接日期数据 | 
|---|
|  |  |  | * @param date | 
|---|
|  |  |  | * @param optType   1:每日开始 2:每日结束 3:昨日结束 | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static Date getMontageDate(Date date ,Integer optType) { | 
|---|
|  |  |  | String strShortDate = DateUtil.dateToString(date,"yyyy-MM-dd"); | 
|---|
|  |  |  | if(optType.equals(1)){ | 
|---|
|  |  |  | return DateUtil.StringToDate(strShortDate +" 00:00:00"); | 
|---|
|  |  |  | }else if(optType.equals(2)){ | 
|---|
|  |  |  | return DateUtil.StringToDate(strShortDate +" 23:59:59"); | 
|---|
|  |  |  | }else if(optType.equals(3)){ | 
|---|
|  |  |  | strShortDate = DateUtil.dateToString(DateUtil.getDateBetween(date,-1),"yyyy-MM-dd"); | 
|---|
|  |  |  | return DateUtil.StringToDate(strShortDate +" 23:59:59"); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static void main(String[] args) { | 
|---|
|  |  |  | System.out.println(DateUtil.DateToStr(DateUtil.afterDateByType( | 
|---|
|  |  |  | DateUtil.stringToDate("2024-02-01","yyyy-MM-dd") | 
|---|
|  |  |  | ,1,1),"yyyy-MM-dd HH:mm:ss")); | 
|---|
|  |  |  | //       System.out.println(DateUtil.DateToStr(DateUtil.afterDateByType( | 
|---|
|  |  |  | //               DateUtil.stringToDate("2024-02-01","yyyy-MM-dd") | 
|---|
|  |  |  | //               ,1,1),"yyyy-MM-dd HH:mm:ss")); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //        System.out.println( DateUtil.daysBetweenDates(DateUtil.stringToDate("2024-02-29","yyyy-MM-dd"), | 
|---|
|  |  |  | //                DateUtil.stringToDate("2024-02-01","yyyy-MM-dd")) | 
|---|
|  |  |  | //        ); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //        System.out.println(DateUtil.calculateBetween(DateUtil.StringToDate("2024-02-29 23:59:59"),DateUtil.StringToDate("2024-02-01 00:00:00"),0)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //        System.out.println( | 
|---|
|  |  |  | //                DateUtil.DateToStr( | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                DateUtil.getMontageDate(DateUtil.StringToDate("2024-02-29 21:59:59"),1) ,"yyyy-MM-dd HH:mm:ss" | 
|---|
|  |  |  | //                ) | 
|---|
|  |  |  | //        ); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | // | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //        System.out.println( | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                DateUtil.DateToStr( | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                        DateUtil.getMontageDate(DateUtil.StringToDate("2024-02-29 21:59:59"),2) ,"yyyy-MM-dd HH:mm:ss" | 
|---|
|  |  |  | //                ) | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //        ); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //        System.out.println( | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                DateUtil.DateToStr( | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                        DateUtil.getMontageDate(DateUtil.StringToDate("2024-02-29 21:59:59"),3) ,"yyyy-MM-dd HH:mm:ss" | 
|---|
|  |  |  | //                ) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //        ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //        System.out.println( | 
|---|
|  |  |  | //                new BigDecimal(16).divide(new BigDecimal(15.5),0, RoundingMode.CEILING) | 
|---|
|  |  |  | //        ); | 
|---|
|  |  |  | LocalDate startDate = DateUtil.StringToDate("2021-02-28 23:59:59").toInstant() | 
|---|
|  |  |  | .atZone(ZoneId.systemDefault()) | 
|---|
|  |  |  | .toLocalDate(); | 
|---|
|  |  |  | LocalDate endDate = DateUtil.StringToDate("2022-04-05 23:59:59").toInstant() | 
|---|
|  |  |  | .atZone(ZoneId.systemDefault()) | 
|---|
|  |  |  | .toLocalDate(); | 
|---|
|  |  |  | //        LocalDate startDate= LocalDate.of(2021,2,28); | 
|---|
|  |  |  | //        LocalDate endDate =LocalDate.of(2022,4,5); | 
|---|
|  |  |  | Period period = Period.between(startDate,endDate); | 
|---|
|  |  |  | int months = period.getYears()* 12 + period.getMonths(); | 
|---|
|  |  |  | System.out.println("Months between the two dates: " + months); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /*        Calendar calo = Calendar.getInstance(); | 
|---|
|  |  |  | Calendar caln = Calendar.getInstance(); // ,"yyyy-MM-dd HH:mm:ss" | 
|---|
|  |  |  | caln.setTime(DateUtil.StringToDate("2024-03-06 23:59:59")); | 
|---|
|  |  |  | calo.setTime(DateUtil.StringToDate("2024-02-05 00:00:00")); | 
|---|
|  |  |  | System.out.println( DateUtil.calculateMonthsBetweenDates(calo,caln));*/ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //        System.out.println( | 
|---|
|  |  |  | //                DateUtil.DateToStr( | 
|---|
|  |  |  | //                        DateUtil.getNextMonthFirst(new Date()) | 
|---|
|  |  |  | //                        ,"yyyy-MM-dd HH:mm:ss") | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //        ); | 
|---|
|  |  |  | //        System.out.println( | 
|---|
|  |  |  | //                DateUtil.DateToStr( | 
|---|
|  |  |  | //                        DateUtil.getNextMonthFirst( | 
|---|
|  |  |  | //                                DateUtil.StringToDate("2024-12-29 21:59:59") | 
|---|
|  |  |  | //                        ) | 
|---|
|  |  |  | //                        ,"yyyy-MM-dd HH:mm:ss") | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //        ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取相差的月数 | 
|---|
|  |  |  | * @param sDate | 
|---|
|  |  |  | * @param eDate | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static Integer getDifferenceMonths(Date sDate ,Date eDate) { | 
|---|
|  |  |  | LocalDate startDate = sDate.toInstant() | 
|---|
|  |  |  | .atZone(ZoneId.systemDefault()) | 
|---|
|  |  |  | .toLocalDate(); | 
|---|
|  |  |  | LocalDate endDate = eDate.toInstant() | 
|---|
|  |  |  | .atZone(ZoneId.systemDefault()) | 
|---|
|  |  |  | .toLocalDate(); | 
|---|
|  |  |  | //        LocalDate startDate= LocalDate.of(2021,2,28); | 
|---|
|  |  |  | //        LocalDate endDate =LocalDate.of(2022,4,5); | 
|---|
|  |  |  | Period period = Period.between(endDate,startDate); | 
|---|
|  |  |  | int months = period.getYears()* 12 + period.getMonths(); | 
|---|
|  |  |  | return months + 1; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|