Android 比较两个时间段是否有交集或重复
2016-02-18 18:39
771 查看
先看一个例图:
在金山《电池管家》应用中就有一个类似上图这样的功能——
开启多个定时任务。
当开启另一个定时任务的时候,如果即将开启的这个定时任务的时间段与已经开启了的定时任务的时间段有交集的话,它就会提示:重叠的任务不可同时启动!
下面我就把这个任务重叠(判断两个时间段是否有重叠)已经写好的一套算法进行封装成了一个工具类的代码贴出来,注释也写在代码中了,相信大家很容易可以理解。
以上仅供参考和学习,如有不好的地方欢迎指正和讨论。谢谢!
在金山《电池管家》应用中就有一个类似上图这样的功能——
开启多个定时任务。
当开启另一个定时任务的时候,如果即将开启的这个定时任务的时间段与已经开启了的定时任务的时间段有交集的话,它就会提示:重叠的任务不可同时启动!
下面我就把这个任务重叠(判断两个时间段是否有重叠)已经写好的一套算法进行封装成了一个工具类的代码贴出来,注释也写在代码中了,相信大家很容易可以理解。
/** * 比较两个时间段是否有交集工具类 * @author qiulong * */ public class TimeCheckUtil { /** * 比较两个时间段数组是否有重合 * @author qiulong * @param timeArray1 * @param timeArray2 * @return 有重合 true; */ public static boolean compare(ArrayList<Integer> timeArray1, ArrayList<Integer> timeArray2) { for (int i : timeArray1) { if (timeArray2.contains(i)) return true; } return false; } /** * 将时间段转换成数组 * @author qiulong * @param ent * @return */ public static ArrayList<Integer> checkList(TimingEntity ent) { // 先将时间转换成分来计算 int timeStart = (ent.getStartHour() * 60) + ent.getStartMinute(); int timeEnd = (ent.getEndHour() * 60) + ent.getEndMinute(); // 将时间段封装成一个数组 ArrayList<Integer> timeArray = new ArrayList<Integer>(); if (timeEnd > timeStart) {// 开始时间小于结束时间 for (int i = timeStart; i <= timeEnd; i++) { timeArray.add(i);// 添加开始时间至结束时间为止的时间 } } else {// 开始时间大于结束时间 for (int i = timeStart; i < 24 * 60; i++) { timeArray.add(i);// 添加开始时间至当天0点以前的剩余时间 } for (int i = 0; i <= timeEnd; i++) { timeArray.add(i);// 添加0点以后到结束时间为止的时间 } } return timeArray; } }
以上仅供参考和学习,如有不好的地方欢迎指正和讨论。谢谢!
相关文章推荐
- android 自定义Dialog背景透明及显示位置设置
- Android异步加载器Loader的使用
- [转]Android How to Download and Make Volley.jar
- Android自定义对话框(Dialog)位置,大小
- Android触摸屏事件派发机制一(View篇)
- android studio 中去除应用标题栏
- Android Studio 在导入第三方包之后出现的gradle DSL method not found 问题原因及解决方案
- Android Animation动画
- android 如何优雅地给Activity和Fragement传入参数
- Android中onSharedPreferenceChangeListener类
- 解决android内存泄露
- RxJava Android 新人实践
- Android常用设计模式(二)
- Android Day02 知识点
- android.mk文件解析
- Android屏幕分辨率适配
- android hover监控鼠标移动事件
- Android 5.0 Lollipop中新的Activity过渡效果介绍
- Android 内存泄漏总结
- android ble蓝牙开发总结(附带自己项目中提取整理的demo地址)