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 查询时间段是否可用,查询时间段是否有交集
最近遇到 类似, 会议室预订的模型, 基本上 是 会议室 + 时间段来检测是否被占用. 其实思路比较简单 , 一开始的思路是 去查询 自己选择的时间段 与数据库已经存在的时间段匹配 是否 可用, ...
随机推荐
- go语言函数作为参数传递
go语言函数作为参数传递,目前给我的感觉几乎和C/C++一致.非常的灵活. import "fmt" import "time" func goFunc1(f ...
- Codefroces 832B Petya and Exam
B. Petya and Exam time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- 一文了解sun.misc.Unsafe
Java语言和JVM平台已经度过了20岁的生日.它最初起源于机顶盒.移动设备和Java-Card,同时也应用在了各种服务器系统中,Java已成为物联网(Internet of Things)的通用语言 ...
- Redis学习总结和相关资料
因为别人都在用Redis,所以我不得不用Redis. 听起来感觉我很菜的样子,事实上和菜没有关系. 一是由于别人都用,作为后来者,没有"先发"优势,只能顺着别人的思路来做.当前 ...
- phoenixframe自己主动化平台在Linux环境下运行用例的说明
phoenixframe自己主动化平台支持在Linux环境下使用phantomjs,Firefox.chrome运行測试用例.但有下面几个问题须要注意: 1.若无法启动phantomjs,Firefo ...
- git在本地分支上 git pull远程分支时,状况
git 在pull或者合并分支的时候有时会遇到这个界面.可以不管(直接下面3,4步),如果要输入解释的话就需要: 1.按键盘字母 i 进入insert模式 2.修改最上面那行黄色合并信息,可以不修改 ...
- 【Codeforces Round #446 (Div. 2) C】Pride
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 想一下,感觉最后的结果肯定是从某一段开始,这一段的gcd为1,然后向左和向右扩散的. 则枚举那一段在哪个地方. 我们设这一段中所有的 ...
- [D3] Debug D3 v4 with Dev Tools
Since D3 outputs standard markup, you can use familiar dev tools and inspectors to debug your visual ...
- Vijos 1164 曹冲养猪(中国剩余定理)
P1164曹冲养猪 Accepted 标签:三国争霸[显示标签] 描写叙述 自从曹冲搞定了大象以后,曹操就開始捉摸让儿子干些事业,于是派他到中原养猪场养猪,但是曹冲满不高兴.于是在工作中马马虎虎,有一 ...
- WP8日历(含农历)APP
WP8日历(含农历)APP WP8日历(含农历)APP UI XAML(部分) <phone:PhoneApplicationPage xmlns:CustomControl="clr ...