1、输入开始日期与结束日期,日期之间大于30天则分页处理并输出间隔天数
具体代码如下:
/* * Copyright (c) 2018-2028, Wujingjie All rights reserved. * * Author: wujingjie (wuhang2008it@hotmail.com) */ package com.test.common.utils; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) { String startDateStr = "2023-05-05"; String endDateStr = "2023-06-18"; List<Pagination> paginationList = getBetweenDate(startDateStr, endDateStr); for (Pagination pagination : paginationList) { System.out.println(pagination); } } /** * 获取开始日期与结束日期按30天分页处理输出 * @param startDateStr 开始日期 * @param endDateStr 结束日期 * @return */ public static List<Pagination> getBetweenDate(String startDateStr, String endDateStr){ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate startDate = LocalDate.parse(startDateStr, formatter); LocalDate endDate = LocalDate.parse(endDateStr, formatter); List<Pagination> paginationList = new ArrayList<>(); LocalDate pageStartDate = startDate; while (pageStartDate.isBefore(endDate)) { LocalDate pageEndDate = pageStartDate.plusDays(30); if (pageEndDate.isAfter(endDate)) { pageEndDate = endDate; } long days = ChronoUnit.DAYS.between(pageStartDate, pageEndDate); Pagination pagination = new Pagination(pageStartDate, pageEndDate, days); paginationList.add(pagination); pageStartDate = pageEndDate.plusDays(1); } return paginationList; } static class Pagination { /** 开始日期 */ private LocalDate startDate; /** 结束日期 */ private LocalDate endDate; /** 间隔天数 */ private long days; public Pagination(LocalDate startDate, LocalDate endDate, long days) { this.startDate = startDate; this.endDate = endDate; this.days = days; } public LocalDate getStartDate() { return startDate; } public LocalDate getEndDate() { return endDate; } public long getDays(){ return days; } @Override public String toString() { return "Pagination{" + "startDate=" + startDate + ", endDate=" + endDate + ", days=" + days + '}'; } } }
2、运行结果
Pagination{startDate=2023-05-05, endDate=2023-06-03, days=30} Pagination{startDate=2023-06-04, endDate=2023-06-18, days=15}