public class GetWeek {
/**
* 求出2个时间段的所有日期
* @param begin
* @param end
* @return
*/
public static List<String> getBetweenDate(String begin,String end){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
List<String> betweenList = new ArrayList<String>();
try{
Calendar startDay = Calendar.getInstance();
startDay.setTime(format.parse(begin));
startDay.add(Calendar.DATE, -1);
while(true){
startDay.add(Calendar.DATE, 1);
Date newDate = startDay.getTime();
String newend=format.format(newDate);
betweenList.add(newend);
if(end.equals(newend)){
break;
}
}
}catch (Exception e) {
e.printStackTrace();
}
return betweenList;
}
/**
* 根据日期获取周几
* @param datetime
* @return
*/
public static String dateToWeek(String datetime) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
Calendar cal = Calendar.getInstance();
Date date;
try {
date = sdf.parse(datetime);
cal.setTime(date);
} catch (ParseException e) {
e.printStackTrace();
}
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
return weekDays[w];
}
public static Map<Integer,List<String>> getResultData(String begin,String end){
List<String> betweenDate = getBetweenDate(begin,end);
int a = 0;
int b = 1;
Map<Integer,List<String>> map = new HashMap<>();
List<String> list = new ArrayList<>();
for(int i= 0; i<betweenDate.size();i++){
list.add(betweenDate.get(i));
if(dateToWeek(betweenDate.get(i)).equals("星期日")){
List<String> listT = new ArrayList<>();
listT.addAll(list);
a++;
map.put(a, listT);
list.clear();
}else{
// 代表结尾不是周日
if(b == betweenDate.size()){
List<String> listT = new ArrayList<>();
listT.addAll(list);
a++;
map.put(a, listT);
list.clear();
}
}
b++;
}
return map;
}
public static void main(String[] args) {
System.out.println(getResultData("2019-11-17","2019-11-26"));
}
{1=[2019-11-17], 2=[2019-11-18, 2019-11-19, 2019-11-20, 2019-11-21, 2019-11-22, 2019-11-23, 2019-11-24], 3=[2019-11-25, 2019-11-26]}