关于LocalDate一些使用示例

获取当前日期的月初日期 (格式:年-月-日)
 public static String getNowMonthFirstDay() {
        LocalDate localDate = LocalDate.now().withDayOfMonth(1);
        return localDate.toString();
 }
获取昨日(格式:年-月-日)
public static String getYesterday() {
        LocalDate localDate = LocalDate.now();
        LocalDate yesterday = localDate.minusDays(1);
        return yesterday.toString();
}
获取指定年月的每月天数
public static Integer getMonthDay(String monthStr) {
        Integer year = Integer.valueOf(monthStr.substring(0,4));
        Integer month = Integer.valueOf(monthStr.substring(5,7));
        LocalDate localDate = LocalDate.of(year, month, 1);
        return YearMonth.from(localDate).lengthOfMonth();
}
获取本月剩余天数 包括当天
public static Integer getResidueDayNum() {
        LocalDate currentDate = LocalDate.now();
        int totalDaysInMonth = currentDate.lengthOfMonth();
        return (totalDaysInMonth-currentDate.getDayOfMonth())+1;
}
获取本年剩余月数 包括当月
public static Integer getResidueMonthNum() {
        Calendar calendar = Calendar.getInstance();
        return 12 - calendar.get(Calendar.MONTH);
}
判断输入日期是否是本月
 public static boolean isThisMonth(String monthStr) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate dateToCheck = LocalDate.parse(monthStr, formatter);
        LocalDate currentDate = LocalDate.now();
        return dateToCheck.getYear() == currentDate.getYear() && dateToCheck.getMonthValue() == currentDate.getMonthValue();
  }
判断输入日期是否是本年
public static Boolean isThisYear(String year) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate dateToCheck = LocalDate.parse(year, formatter);
        LocalDate currentDate = LocalDate.now();
        return dateToCheck.getYear() == currentDate.getYear();
}
获取两个日期间的每一天 yyyy-MM-dd
private List<String> getEveryDay(String startDate, String endDate) {
                List<String> days = new ArrayList<>();
                LocalDate start = LocalDate.of(Integer.parseInt(startDate.substring(0,4)), Integer.parseInt(startDate.substring(5,7)), Integer.parseInt(startDate.substring(8)));
                LocalDate end = LocalDate.of(Integer.parseInt(endDate.substring(0,4)), Integer.parseInt(endDate.substring(5,7)), Integer.parseInt(endDate.substring(8)));
                LocalDate currentDate = start;
                while (!currentDate.isAfter(end)) {
                        days.add(String.valueOf(currentDate));
                        currentDate = currentDate.plusDays(1);
                }
                return days;
}
获取两个月份间的每个?日 入参时间格式yyyy-MM 例如2024-01到2024-12每个月的5号
private List<String> getMonthDays(String startDate, String endDate, String inspectionDay) {
                List<String> days = new ArrayList<>();
                LocalDate start = LocalDate.of(Integer.parseInt(startDate.substring(0,4)), Integer.parseInt(startDate.substring(5,7)), 1);
                LocalDate end = LocalDate.of(Integer.parseInt(endDate.substring(0,4)), Integer.parseInt(endDate.substring(5,7)),1);
                long monthsBetween = ChronoUnit.MONTHS.between(start.withDayOfMonth(1),end.withDayOfMonth(1));
                Integer startYear = Integer.parseInt(startDate.substring(0,4));
                Integer startMonth = Integer.parseInt(startDate.substring(5,7));
                for (int i = 1, j = (int) (monthsBetween+1); i<=j; i++ ) {
                        if(startMonth > 12){
                                startMonth = startMonth-12;
                                startYear = startYear+1;
                        }
                        Integer day = Integer.parseInt(inspectionDay);
                        LocalDate dayDate = null;
                        dayDate = getDayDate(dayDate, startYear,startMonth,day);
                        days.add(String.valueOf(dayDate));
                        startMonth = startMonth+1;
                }
                return days;
 }

private LocalDate getDayDate(LocalDate dayDate, Integer startYear, Integer startMonth, Integer day) {
                try{
                        dayDate = LocalDate.of(startYear, startMonth, day);
                }catch (Exception e){
                        if (e.getMessage().contains("Invalid date ")) {
                                day = day-1;
                                dayDate = getDayDate(dayDate, startYear,startMonth,day);
                        }
                }
                return dayDate;
}
获取两个日期间的每个周几 yyyy-MM-dd 例如2024-01到2024-12每个周一的日期
public static List<String> getWeekDays(String startDate, String endDate,DayOfWeek dayOfWeek) {
                LocalDate start = LocalDate.of(Integer.parseInt(startDate.substring(0,4)), Integer.parseInt(startDate.substring(5,7)), Integer.parseInt(startDate.substring(8)));
                LocalDate end = LocalDate.of(Integer.parseInt(endDate.substring(0,4)), Integer.parseInt(endDate.substring(5,7)), Integer.parseInt(endDate.substring(8)));
                List<String> mondays = new ArrayList<>();
                while (start.isBefore(end) || start.isEqual(end)) {
                        if (start.getDayOfWeek().equals(dayOfWeek)) {
                                mondays.add(String.valueOf(start));
                        }
                        start = start.plusDays(1);
                }
                return mondays;
}

/**
* 根据数字获取周几
*/
private DayOfWeek getWeekType(String inspectionDay) {
  if("1".equals(inspectionDay)){
     return DayOfWeek.MONDAY;
  }else if("2".equals(inspectionDay)){
     return DayOfWeek.TUESDAY;
  }else if("3".equals(inspectionDay)){
     return DayOfWeek.WEDNESDAY;
  }else if("4".equals(inspectionDay)){
     return DayOfWeek.THURSDAY;
  }else if("5".equals(inspectionDay)){
     return DayOfWeek.FRIDAY;
  }else if("6".equals(inspectionDay)){
     return DayOfWeek.SATURDAY;
  }else {
     return DayOfWeek.SUNDAY;
  }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值