先看一个例图:

在金山《电池管家》应用中就有一个类似上图这样的功能—— 开启多个定时任务。

当开启另一个定时任务的时候,如果即将开启的这个定时任务的时间段与已经开启了的定时任务的时间段有交集的话,它就会提示:重叠的任务不可同时启动!

下面我就把这个任务重叠(判断两个时间段是否有重叠)已经写好的一套算法进行封装成了一个工具类的代码贴出来,注释也写在代码中了,相信大家很容易可以理解。

/**
* 比较两个时间段是否有交集工具类
* @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 比较两个时间段是否有交集或重复的更多相关文章

  1. PHP计算两个时间段是否有交集(边界重叠不算)

    优化前的版本: /** * PHP计算两个时间段是否有交集(边界重叠不算) * * @param string $beginTime1 开始时间1 * @param string $endTime1 ...

  2. mysql判断两个时间段是否有交集

    //判断两个时间段是否有交集 private function checkTimeCross($start_time,$end_time){ $sql ) AND ((start_time > ...

  3. sql语句判断两个时间段是否有交集

    场景:  数据库有有两个字段.开始时间<startTime>,和结束时间<endTime>,指定一个时间段(a,b),a表示开始时间,b表示结束时间.看数据库中有没有与(a,b ...

  4. java 判断两个时间段是否有交集

    /* 开始时间 */ Date leftStartDate = feesPreferential.getPreferentialStartTime(); /* 结束时间 */ Date leftEnd ...

  5. js判断两个时间段是否有交集

    //判断两个时间是否有交集 function isDateIntersection(start1, end1, start2, end2) { var startdate1 = new Date(st ...

  6. java 判断两个时间段是不是有交集

    如上图:X Y  Z  分别为传来的开始时间可能位于数据库中时间段的位置. X有三种可能 即传来的开始时间为与数据可中某条数据的开始位置!      这样他的结束时间就有三种可能       1.位于 ...

  7. sql 判断两个时间段是否有交集

    本文转自CSDN 链接地址:http://blog.csdn.net/dasihg/article/details/8450195 时间段:starttime_1到endtime_1,starttim ...

  8. php 判断两个时间段是否有交集

    一开始,没啥思路,全靠百度,记录一下哈 public function demo(){ //例子 $astart = strtotime("1995-06-16 12:00:00" ...

  9. Mysql 查询时间段是否可用,查询时间段是否有交集

    最近遇到 类似, 会议室预订的模型,  基本上 是  会议室 + 时间段来检测是否被占用. 其实思路比较简单 , 一开始的思路是 去查询 自己选择的时间段 与数据库已经存在的时间段匹配  是否 可用, ...

随机推荐

  1. golang filepath.Glob

    package main import ( "fmt" "path/filepath" ) func main() { //找出/home/ 目录下的所有的lo ...

  2. position(static-relative-absolute-fixed),margin(top-right-bottom-left),top-right-bottom-left

    最近写css遇到一些问题,所以准备写下来捋一下思路. 1.position=satic下看margin的使用.(top-right-bottom-left在这种case下无效) 1-1)margin ...

  3. Linux文本编辑器

    1.编辑模式 2.命令模式 3.底部命令模式 注意:如果发现编辑不了.可能是因为非法退出产生一个后缀名为.swp 的临时隐藏文件. 将其删除重新编辑即可!

  4. 数值溢出(arithmetic overflow)问题与解决方案

    0. 典型场景 两数相加(乘法).两数相减.一个数的阶乘,一个数的幂,这些统统可能造成数值的溢出: 避免数值溢出的方法: 当把一个计算出的很大的数赋值给一个 int(2^31-1)类型变量存储时,一般 ...

  5. C#程序集引入无效的解决方法

    在项目类库中已经引用了相关了类库,生成解决方案也没问题,但是到了后置代码,通过using引用其他类库的时候,再生成解决方案或者生成单个类库,就会报“未能找到类型或命名空间“xxx"(是否缺少 ...

  6. Oracle学习总结(9)—— Oracle 常用的基本操作

    创建用户,相当于在sqlServer中创建一个数据库  create user 用户名 identified by 密码  修改用户密码  alter user 用户名 identified by 新 ...

  7. Nginx分发服务

    nginx配置分发tomcat服务 http://blog.csdn.net/yan_chou/article/details/53265775 http://www.cnblogs.com/deng ...

  8. 三期_day03_环境搭建和客户页面_I

    以下交代一下使用的框架 前端: EasyUI+Jquery+Ajax 后台: Spring+Structs2+mybatis 数据库: Oracle 使用工具: MyEclipse12+Maven 操 ...

  9. node event中 on emit off 的封装

    事件绑定一个事件名称对应多个事件函数 应此它们的关系是一对多的关系 数据类型采用对象的形式 key:val 因为函数有多个 所以val选用数组 事件仓库 eventList = { key:val, ...

  10. 网站图标——favicon

    首先推荐一个网站图标在线制作工具favicon: 插入图标只需在head中间加入以下代码: <link rel="icon" href="img/favicon.i ...