Java 对一组时间进行处理 提出连续的时间段
生活随笔
收集整理的這篇文章主要介紹了
Java 对一组时间进行处理 提出连续的时间段
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
近期的開發工作中,遇到一個需求。一組時間段內,取出連續的時間段分組。
如2016-01-01,2016-01-02,2016-01-03,2016-01-04,2016-01-06,2016-01-07
結果為[2016-01-01,2016-01-03],[2016-01-04,2016-01-04],[2016-01-06,2016-01-07]。
廢話不多說,上代碼。注意需要先對list進行小到大排序。
List<Map<String,Object>> object = new ArrayList<Map<String,Object>>(); //測試數據Map<String,Object> map = new HashMap<String,Object>(); map.put("scheduleDate", "2017-12-11");object.add(map);map = new HashMap<String,Object>();map.put("scheduleDate", "2017-12-12");object.add(map);map = new HashMap<String,Object>();map.put("scheduleDate", "2017-12-13");object.add(map);map = new HashMap<String,Object>();map.put("scheduleDate", "2017-12-14"); //1object.add(map);map = new HashMap<String,Object>();map.put("scheduleDate", "2017-12-16"); //2object.add(map);map = new HashMap<String,Object>();map.put("scheduleDate", "2017-12-18"); object.add(map);map = new HashMap<String,Object>();map.put("scheduleDate", "2017-12-19");object.add(map);map = new HashMap<String,Object>();map.put("scheduleDate", "2017-12-20");//3object.add(map);map = new HashMap<String,Object>();map.put("scheduleDate", "2017-12-22");object.add(map);map = new HashMap<String,Object>();map.put("scheduleDate", "2017-12-23");object.add(map);map = new HashMap<String,Object>();map.put("scheduleDate", "2017-12-24"); //4object.add(map);map = new HashMap<String,Object>();map.put("scheduleDate", "2017-12-28"); //5object.add(map);Date startDate = dateFormat.parse(object.get(0).get("scheduleDate").toString());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;}Date parse = dateFormat.parse(object.get(i).get("scheduleDate").toString());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);Date time2 = calendar.getTime();//如果parse+1天不等于parse1if (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;}}總結
以上是生活随笔為你收集整理的Java 对一组时间进行处理 提出连续的时间段的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浏览器访问127.0.0.1已拒绝连接
- 下一篇: 短视频的素材在哪里找呢?推荐给你一个好办