/获取连续的日期区间
public List<String> getPeriodTime(List<String> timeList) throws ParseException {
List<String> datePeriod=new ArrayList<String>();
List<Map<String,Object>> object = new ArrayList<Map<String,Object>>();
if(timeList!=null && timeList.size()>0){
for(String date:timeList){
Map<String,Object> map = new HashMap<String,Object>();
map.put("scheduleDate", date);
object.add(map);
}
}
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar=Calendar.getInstance();
java.util.Date startDate = dateFormat.parse(object.get(0).get("scheduleDate").toString());
java.util.Date endDate = null;
boolean is = false;
List<Map<String,Object>> tempList= new ArrayList<Map<String,Object>>();
for (int i = 0; i < object.size(); i++) {
if(is){
startDate = dateFormat.parse(object.get(i).get("scheduleDate").toString());
is = false;
}
java.util.Date parse = dateFormat.parse(object.get(i).get("scheduleDate").toString());
java.util.Date parseNext = null;
if((i+1)==object.size()){
parseNext = dateFormat.parse(object.get(i).get("scheduleDate").toString());
}else{
parseNext = dateFormat.parse(object.get(i+1).get("scheduleDate").toString());
}
calendar.setTime(parse);
calendar.add(Calendar.DATE, 1);
java.util.Date time2 = calendar.getTime();
//如果parse+1天不等于parse1
if (parseNext .compareTo(time2)!=0 || (i+1)==object.size()) {
if ((i+1)==object.size()) { //如果循环到最后一个
endDate=parseNext;
}else{
endDate=parse;
}
Map<String,Object> map1 = new HashMap<String,Object>();
map1.put("begin", dateFormat.format(startDate));
map1.put("end", dateFormat.format(endDate));
tempList.add(map1);
startDate = parseNext ;
is = true;
}
}
Iterator<Map<String, Object>> it= tempList.iterator();
while (it.hasNext()){
Map<String,Object> timeMap = (Map) it.next();
String beginTime="";
String endTime="";
for (Map.Entry<String, Object> entry : timeMap.entrySet()) {
if(entry.getKey().equals("begin")){
beginTime=(String)entry.getValue();
}
if(entry.getKey().equals("end")){
endTime=(String)entry.getValue();
}
}
datePeriod.add(beginTime+"~"+endTime);
}
return datePeriod;
}
JAVA根据多个日期生成连续日期区间
于 2021-07-28 17:06:39 首次发布