获取两个时间段的周一、周日
参数传两个时间
开始时间:2022-08-15
结束时间:2022-09-05
得到的结果是一个list数组,便利数组的到时间
1.工具类
package com.lx.module;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
public class Processingdate {
/**
* description 拆分日期
*
* @param startDate 开始日期
* @param endDate 结束日期
* @author yanzy
* @version 1.0
* @date 2021/6/3 13:36
*/
public static List<String> dateSplit(String startDate, String endDate) throws Exception {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
List<Date> dateList = new ArrayList();
// 开始日期
Date start = simpleDateFormat.parse(startDate);
// 结束日期
Date end = simpleDateFormat.parse(endDate);
Calendar c = Calendar.getInstance();
c.setTime(start);
if (c.get(Calendar.DAY_OF_WEEK) == 1) {
c.add(Calendar.DAY_OF_MONTH, -1);
}
c.add(Calendar.DATE, c.getFirstDayOfWeek() - c.get(Calendar.DAY_OF_WEEK) + 1);
Date time = c.getTime();
System.out.println(time);
Long spi = end.getTime() - start.getTime();
Long step = spi / (24 * 60 * 60 * 1000);// 相隔天数
dateList.add(start);
for (int i = 1; i <= step; i++) {
// 比上一天加1
dateList.add(new Date(dateList.get(i - 1).getTime() + (24 * 60 * 60 * 1000)));
}
ArrayList<String> dateLists = new ArrayList();
String startFormat = simpleDateFormat.format(start);
dateLists.add(startFormat);
for (Date date : dateList) {
String day = simpleDateFormat.format(date);
String s = weekMap.get(LocalDate.parse(day).getDayOfWeek().toString());
if (("周一".equals(s))||("周日".equals(s))) {
dateLists.add(day);
}
}
String endFormat = simpleDateFormat.format(end);
dateLists.add(endFormat);
return dateLists;
}
private static Map<String, String> weekMap = new HashMap<String, String>() {
{
put("MONDAY", "周一");
put("TUESDAY", "周二");
put("WEDNESDAY", "周三");
put("THURSDAY", "周四");
put("FRIDAY", "周五");
put("SATURDAY", "周六");
put("SUNDAY", "周日");
}
};
}
2.service层
/**
* @description:根据时间区间,找区间内所有周一、周日
* @param: @param startDate
* @param @endDate
* @return: java.util.List<java.lang.String>
* @author 72720
* @date: 2022-8-20 13:05
*/
@Override
public List<String> add(String startDate, String endDate) throws Exception {
Processingdate processingdate = new Processingdate();
List<String> strings = processingdate.dateSplit(startDate, endDate);
StringBuilder stringBuilder = new StringBuilder();
ArrayList<StringBuilder> stringBuilders = new ArrayList<>();
for (int i =0;i<strings.size();i++){
if (i%2==0){
stringBuilder=new StringBuilder();
stringBuilder.append(strings.get(i)).append("~");
}else {
stringBuilder.append(strings.get(i));
}
/* if (i%2==0){
stringBuilder.append(strings.get(i)).append("~");
}else {
stringBuilder.append(strings.get(i));
}*/
// stringBuilder.append(strings.get(i)).append("~");
// 有重复的日期(需要更新)
stringBuilders.add(stringBuilder);
}
// 去除重复代码![在这里插入图片描述](https://img-blog.csdnimg.cn/120c19ba69cc474d93600777f672f75d.jpeg#pic_center)
LinkedHashSet<StringBuilder> linkedHashSet = new LinkedHashSet<StringBuilder>(stringBuilders);
ArrayList<StringBuilder> arrayList = new ArrayList<StringBuilder>(linkedHashSet);
System.out.println(arrayList);
return strings;
}
3.Controller
@GetMapping("/add")
@ApiOperation(value = "日期")
@ResponseBody
public List<StringBuilder> add(String startDate, String endDate) throws Exception {
List<StringBuilder> add = practicefromService.add(startDate, endDate);
System.out.println(add);
return add;
}
4.请求方式和获取结果
完结~~~~