java按照星期(周)把一个时间段拆分成多个时间区间

java按照星期(周)把一个时间段拆分成多个时间区间

package com.example.demo.utils;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 * 将时间段按照周拆分
 * @author qzz
 * @date 2023/5/18
 */
public class SplitDateUtil2 {
    
    

    /**
     * 将时间段按星期分割
     * @param startDate
     * @param endDate
     * @return
     */
    public static List<KeyValueForDate> parseWeekRange(LocalDate startDate, LocalDate endDate) {
    
    
        DateTimeFormatter dtf= DateTimeFormatter.ofPattern("yyyy-MM-dd");
        List<KeyValueForDate> list = new ArrayList<>();

        KeyValueForDate dr = null;

        LocalDate stDate = startDate;
        LocalDate enDate = endDate.plusDays(1);

        while (stDate.isBefore(enDate)) {
    
    

            int week = stDate.getDayOfWeek().getValue();

            if (dr == null || week == 1) {
    
    
                dr = new KeyValueForDate();
                dr.setStartDate(stDate.format(dtf));
            }

            if (week == 7 || stDate.compareTo(endDate) == 0) {
    
    
                dr.setEndDate(stDate.format(dtf));
                list.add(dr);
            }

            stDate = stDate.plusDays(1);
        }

        return list;
    }

    public static class KeyValueForDate {
    
    
        private String startDate;
        private String endDate;
        private Integer days;
        public String getStartDate() {
    
    
            return startDate;
        }
        public void setStartDate(String startDate) {
    
    
            this.startDate = startDate;
        }
        public String getEndDate() {
    
    
            return endDate;
        }
        public void setEndDate(String endDate) {
    
    
            this.endDate = endDate;
        }

        public Integer getDays() {
    
    
            return days;
        }

        public void setDays(Integer days) {
    
    
            this.days = days;
        }
    }

    public static void main(String[] args) {
    
    
        //根据一段时间区间,按星期拆分成多个时间段
        System.out.println("周报 开始日期--------------结束日期");
        LocalDate startDate = LocalDate.parse("2023-04-27");
        LocalDate endDate = LocalDate.parse("2023-05-18");
        List<KeyValueForDate> list1= parseWeekRange(startDate, endDate);
        for(KeyValueForDate date : list1){
    
    
            System.out.println(date.getStartDate()+"--------------"+date.getEndDate());
        }
    }
}

执行效果:

"D:\Program Files\Java\jdk-11.0.11\bin\java.exe" "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2021.1.3\lib\idea_rt.jar=56705:D:\Program Files\JetBrains\IntelliJ IDEA 2021.1.3\bin" -Dfile.encoding=UTF-8 -classpath F:\student-project\demo\target\classes;D:\mvnrepository\org\springframework\boot\spring-boot-starter-web\2.7.9\spring-boot-starter-web-2.7.9.jar;D:\mvnrepository\org\springframework\boot\spring-boot-starter\2.7.9\spring-boot-starter-2.7.9.jar;D:\mvnrepository\org\springframework\boot\spring-boot\2.7.9\spring-boot-2.7.9.jar;D:\mvnrepository\org\springframework\boot\spring-boot-autoconfigure\2.7.9\spring-boot-autoconfigure-2.7.9.jar;D:\mvnrepository\org\springframework\boot\spring-boot-starter-logging\2.7.9\spring-boot-starter-logging-2.7.9.jar;D:\mvnrepository\ch\qos\logback\logback-classic\1.2.11\logback-classic-1.2.11.jar;D:\mvnrepository\ch\qos\logback\logback-core\1.2.11\logback-core-1.2.11.jar;D:\mvnrepository\org\apache\logging\log4j\log4j-to-slf4j\2.17.2\log4j-to-slf4j-2.17.2.jar;D:\mvnrepository\org\apache\logging\log4j\log4j-api\2.17.2\log4j-api-2.17.2.jar;D:\mvnrepository\org\slf4j\jul-to-slf4j\1.7.36\jul-to-slf4j-1.7.36.jar;D:\mvnrepository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\mvnrepository\org\yaml\snakeyaml\1.30\snakeyaml-1.30.jar;D:\mvnrepository\org\springframework\boot\spring-boot-starter-json\2.7.9\spring-boot-starter-json-2.7.9.jar;D:\mvnrepository\com\fasterxml\jackson\core\jackson-databind\2.13.5\jackson-databind-2.13.5.jar;D:\mvnrepository\com\fasterxml\jackson\core\jackson-annotations\2.13.5\jackson-annotations-2.13.5.jar;D:\mvnrepository\com\fasterxml\jackson\core\jackson-core\2.13.5\jackson-core-2.13.5.jar;D:\mvnrepository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.13.5\jackson-datatype-jdk8-2.13.5.jar;D:\mvnrepository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.13.5\jackson-datatype-jsr310-2.13.5.jar;D:\mvnrepository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.13.5\jackson-module-parameter-names-2.13.5.jar;D:\mvnrepository\org\springframework\boot\spring-boot-starter-tomcat\2.7.9\spring-boot-starter-tomcat-2.7.9.jar;D:\mvnrepository\org\apache\tomcat\embed\tomcat-embed-core\9.0.71\tomcat-embed-core-9.0.71.jar;D:\mvnrepository\org\apache\tomcat\embed\tomcat-embed-el\9.0.71\tomcat-embed-el-9.0.71.jar;D:\mvnrepository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.71\tomcat-embed-websocket-9.0.71.jar;D:\mvnrepository\org\springframework\spring-web\5.3.25\spring-web-5.3.25.jar;D:\mvnrepository\org\springframework\spring-beans\5.3.25\spring-beans-5.3.25.jar;D:\mvnrepository\org\springframework\spring-webmvc\5.3.25\spring-webmvc-5.3.25.jar;D:\mvnrepository\org\springframework\spring-aop\5.3.25\spring-aop-5.3.25.jar;D:\mvnrepository\org\springframework\spring-context\5.3.25\spring-context-5.3.25.jar;D:\mvnrepository\org\springframework\spring-expression\5.3.25\spring-expression-5.3.25.jar;D:\mvnrepository\org\slf4j\slf4j-api\1.7.36\slf4j-api-1.7.36.jar;D:\mvnrepository\org\springframework\spring-core\5.3.25\spring-core-5.3.25.jar;D:\mvnrepository\org\springframework\spring-jcl\5.3.25\spring-jcl-5.3.25.jar;D:\mvnrepository\com\alibaba\fastjson\2.0.1\fastjson-2.0.1.jar;D:\mvnrepository\com\alibaba\fastjson2\fastjson2-extension\2.0.1\fastjson2-extension-2.0.1.jar;D:\mvnrepository\com\alibaba\fastjson2\fastjson2\2.0.1\fastjson2-2.0.1.jar;D:\mvnrepository\cn\hutool\hutool-all\5.8.15\hutool-all-5.8.15.jar com.example.demo.utils.SplitDateUtil2
周报 开始日期--------------结束日期
2023-04-27--------------2023-04-30
2023-05-01--------------2023-05-07
2023-05-08--------------2023-05-14
2023-05-15--------------2023-05-18

Process finished with exit code 0

猜你喜欢

转载自blog.csdn.net/qq_26383975/article/details/130761203