应用场景如下:购买某种套餐服务,每周固定服务几天,给定开始服务时间和总共服务次数,获取具体服务的每一天的日期。
/**
* 获取一周内的某几天
* @param dateStr 起始日期
* @param containList 一周内的某几天(日一二三四五六 ---> 1234567)
* @param total 要获取的总天数
* @return
* @throws ParseException
*/
public static List<Date> getDayOfEveryWeek(String dateStr,List<String> containList,int total) throws ParseException{
List<Date> date_list = new ArrayList<Date>();
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date parse = sdf.parse(dateStr);
c.setTime(parse);
for(int i = 0; i < total ; i ++){
boolean flag = true;
if(date_list.size() > 0){
c.setTime(date_list.get(date_list.size() - 1));
}
Date time = c.getTime();
int k = 0;
if(i > 0){
k = 1;
}
while(flag){
c.setTime(time);
c.add(Calendar.DAY_OF_MONTH, k);
if(containList.contains(c.get(Calendar.DAY_OF_WEEK) + "")){
Date temp = c.getTime();
if(!date_list.contains(temp)){
date_list.add(temp);
flag = false;
}
}
k ++;
}
continue;
}
return date_list;
}