近期的开发工作中,遇到一个需求。一组时间段内,取出连续的时间段分组。

如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 对一组时间进行处理 提出连续的时间段相关推荐

  1. java处理日期时间 相加减

    参考:http://alexfc.iteye.com/blog/363185 JAVA处理日期时间常用方法: 1.java.util.Calendar  Calendar 类是一个抽象类,它为特定瞬间 ...

  2. 详解 Java 日期与时间

    文章目录 一.时区 二.夏令时 三.旧 API 3.1. Date 3.2. SimpleDateFormat 3.3. Calendar 四.新 API 4.1. LocalDateTime 4.2 ...

  3. java获取日期/时间

    获取年月日.小时分钟秒 public class DateTimeTest {public static void main(String[] args) {Calendar cal = Calend ...

  4. Java 日期和时间

    Java 日期和时间 日期和时间在我们的实际开发中非常常用,例如用户的注册.数据的增删改.对敏感信息的操作等等都需要记录下日期和时间.通过本小节的学习,你将了解到什么是日期.什么是时间.什么是时区,J ...

  5. Java仿微信时间显示

    Java仿微信时间显示 需求 代码实现 1.dto类设计 2.controller层 3.service层 4.时间格式化(service层) 4.分组函数(service层) 总结 需求 微信聊天消 ...

  6. Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几

    Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...

  7. Java基础 ----常用时间类

    Java基础 ----常用时间类 java.util.Date java.util.Calendar java.text.SimpleDateFormat new Date().getTime() & ...

  8. 如何使用Java获取当前日期/时间

    用Java获取当前日期/时间的最佳方法是什么? #1楼 采用: String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss") ...

  9. Java基础入门(一):Java里面的时间

    这是一篇非常基础的Java技术文章,简单的说就是一个知识点,是自己在写业务代码时的一点总结,大神请绕行. 在 java 里面 表示 时间 ,一种是 java.util.Date 类,一种是 long ...

最新文章

  1. bat maven 一键打包 3.0
  2. 查看历史操作记录_燕麦课堂丨操作日志管理,为企业数据安全保驾护航
  3. 20145324 20145325 《信息安全系统设计基础》实验三
  4. python四则运算器tkinter_Python基于Tkinter的二输入规则器(乞丐版)
  5. MVC工作中的笔记~2(架构师是一步一步练成的)
  6. centos oracle 修改监听服务名_Oracle-Oracle DB、监听和oem开机启动
  7. Win10:ssh报错:RSA host key for 192.168.3.10 has changed and you have requested strict checking.
  8. linux设备驱动归纳总结(三):1.字符型设备之设备申请【转】
  9. canny算法(3)——非极大值抑制
  10. python给csv文件添加表头
  11. 世界著名半导体公司及其官网
  12. JS基础——选项卡列表显示隐藏缩略图(函数传参)
  13. 安卓动画壁纸实战:制作一个星空动态壁纸(带随机流星动画)
  14. android之java程序性能优化(不断补充)
  15. Vue实现顶部导航栏设计
  16. 电脑热点怎么开,教你win7开启热点教程
  17. 维棠下载flv出错 kmplayer背黑锅
  18. MFC 修改文件或者文件夹的属性。
  19. python程序是由一系列代码组成的_python3.x学习小记
  20. 黄金瞳-域名历史成交价格查询器

热门文章

  1. 快鲸公寓管理系统:职业房东、公寓运营商的共同选择
  2. [armv9]-PAC:Pointer authentication和BTI:Branch target instructions介绍
  3. [折腾日记]win10 ,ubuntu双系统安装避坑指南
  4. 分布式监控系统WGCLOUD故障自愈能力说明
  5. (附源码)计算机毕业设计SSM加油站管理信息系统
  6. 格式化xml文件排版String
  7. 高德地图鼠标划线显示距离并生成坐标点数据
  8. 华为8月9日发布鸿蒙,8月9日华为正式发布鸿蒙系统
  9. BK7256,上海博通Wi-Fi6SOC芯片,高度集成-支持100w像素,详细资料
  10. Elasticsearch模块——CRUD