Android 比较两个时间段是否有交集或重复
先看一个例图:
在金山《电池管家》应用中就有一个类似上图这样的功能—— 开启多个定时任务。
当开启另一个定时任务的时候,如果即将开启的这个定时任务的时间段与已经开启了的定时任务的时间段有交集的话,它就会提示:重叠的任务不可同时启动!
下面我就把这个任务重叠(判断两个时间段是否有重叠)已经写好的一套算法进行封装成了一个工具类的代码贴出来,注释也写在代码中了,相信大家很容易可以理解。
/**
* 比较两个时间段是否有交集工具类
* @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() * ) + ent.getStartMinute();
int timeEnd = (ent.getEndHour() * ) + 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 < * ; i++) {
timeArray.add(i);// 添加开始时间至当天0点以前的剩余时间
}
for (int i = ; i <= timeEnd; i++) {
timeArray.add(i);// 添加0点以后到结束时间为止的时间
}
}
return timeArray;
} }
Android 比较两个时间段是否有交集或重复的更多相关文章
- PHP计算两个时间段是否有交集(边界重叠不算)
优化前的版本: /** * PHP计算两个时间段是否有交集(边界重叠不算) * * @param string $beginTime1 开始时间1 * @param string $endTime1 ...
- mysql判断两个时间段是否有交集
//判断两个时间段是否有交集 private function checkTimeCross($start_time,$end_time){ $sql ) AND ((start_time > ...
- sql语句判断两个时间段是否有交集
场景: 数据库有有两个字段.开始时间<startTime>,和结束时间<endTime>,指定一个时间段(a,b),a表示开始时间,b表示结束时间.看数据库中有没有与(a,b ...
- java 判断两个时间段是否有交集
/* 开始时间 */ Date leftStartDate = feesPreferential.getPreferentialStartTime(); /* 结束时间 */ Date leftEnd ...
- js判断两个时间段是否有交集
//判断两个时间是否有交集 function isDateIntersection(start1, end1, start2, end2) { var startdate1 = new Date(st ...
- java 判断两个时间段是不是有交集
如上图:X Y Z 分别为传来的开始时间可能位于数据库中时间段的位置. X有三种可能 即传来的开始时间为与数据可中某条数据的开始位置! 这样他的结束时间就有三种可能 1.位于 ...
- sql 判断两个时间段是否有交集
本文转自CSDN 链接地址:http://blog.csdn.net/dasihg/article/details/8450195 时间段:starttime_1到endtime_1,starttim ...
- php 判断两个时间段是否有交集
一开始,没啥思路,全靠百度,记录一下哈 public function demo(){ //例子 $astart = strtotime("1995-06-16 12:00:00" ...
- Mysql 查询时间段是否可用,查询时间段是否有交集
最近遇到 类似, 会议室预订的模型, 基本上 是 会议室 + 时间段来检测是否被占用. 其实思路比较简单 , 一开始的思路是 去查询 自己选择的时间段 与数据库已经存在的时间段匹配 是否 可用, ...
随机推荐
- 1.3 Quick Start中 Step 5: Start a consumer官网剖析(博主推荐)
不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ Step 5: Start a consumer Step : 消费消息 Kafka ...
- spring jdbcTemplate使用queryForList示例
查询代码: LogVo 日志要显示的内容(Log的部分或者全部列) Log是日志完整的实体 public List<LogVO> findLogByDate(String startDat ...
- drawable-图片绘制
首先看一下,下端代码 private Bitmap createSelectedChip(RecipientEntry contact, TextPaint paint) { int height = ...
- 自己在linux上编译、链接、动态库和静态库的学习笔记
在平常的项目中,我们都是使用公司要求的makefile.makedebug一类的文件,因此,在编译.链接.生成和链接动态库与静态库的时候,我们只是简单的使用一些已经设置的变量,只是简单的修改.添加一些 ...
- Docker---(7)Docker安装启动RabbitMQ
原文:Docker---(7)Docker安装启动RabbitMQ 版权声明:欢迎转载,请标明出处,如有问题,欢迎指正!谢谢!微信:w1186355422 https://blog.csdn.net/ ...
- spring mvc笔记
80214shuenjian224shuenjian@sina 北风网公开课课程大纲1.学习MVC框架的步骤2.Spring MVC运行机制3.演示Spring MVCAdd Maven suppor ...
- 【例 7-12 UVA - 1343】The Rotation Game
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 迭代加深搜索. 每次抽动操作最多只会让中间那一块的区域离目标的"距离"减少1. 以这个作为剪枝. 枚举最大深度. ...
- 黑马day01 xml 的解析方式
XML编程:利用java程序去增删改查(CRUD)xml中的数据 解析思想: dom解析 sax解析 基于这两种解析思想市面上就有了非常多的解析api sun jaxp既有dom方式也有sax方式,而 ...
- POJ 2376 Cleaning Shifts 区间覆盖问题
http://poj.org/problem?id=2376 题目大意: 给你一些区间的起点和终点,让你用最小的区间覆盖一个大的区间. 思路: 贪心,按区间的起点找满足条件的并且终点尽量大的. 一开始 ...
- WCF学习笔记——对象序列化
当试图通过Web服务.WCF这样的远程处理技术将一个对象复制到远端时,具有对类型序列化的能力很关键. 一 序列化基础 序列化描述了持久化或传输一个对象的状态到流的过程(.NET将对象序列化到流,流是字 ...