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