Android 比较两个时间段是否有交集或重复

news/2024/7/16 4:43:04

先看一个例图:

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

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

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

/**
 * 比较两个时间段是否有交集工具类
 * @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;
    }

}

 


http://www.niftyadmin.cn/n/1942729.html

相关文章

自动升级程序

http://www.cnblogs.com/stoneniqiu/p/3806558.html http://www.cnblogs.com/KnightsWarrior/archive/2010/10/20/1856255.html http://autoupdater.codeplex.com/

2016-02-29 11:18:32 证书2

iOS开发者证书的那些事 字数1449 阅读71 评论0 喜欢3?苹果官方文档 Certificates 证书 我们从开发者中心了解到&#xff0c;开发者证书分为两种类型&#xff1a;Development Certificate(开发证书)和Production Certificate(发布证书)。两种证书都有对应的附属证书&#xff0c…

Vue 实例

1. Vue 实例 1.1 构造器 var vm new Vue({ // data }); 1.2 属性和方法 var data { a: 1 } var vm new Vue({data: data })vm.a data.a // -> true// 设置属性也会影响到原始数据 vm.a 2 data.a // -> 2// ... 反之亦然 data.a 3 vm.a // -> 3Vue 实例暴露了一些…

HCNA 实验指南(Ensp V350)

HCNA实验之熟悉VRP基本操作-----LuosirFAQ1.什么是VRP&#xff1f;VRP&#xff08;Versatile Routing Platform&#xff0c;通用路由平台&#xff09;VRP&#xff08;Versatile Routing Platform&#xff0c;通用路由平台&#xff09;是华为公司数据通信产品的通用网络操作系统…

使用fragment添加底部导航栏

切记&#xff1a;fragment一定要放在framlayout中&#xff0c;不然不会被替换完全&#xff08;就是切换之后原来的fagment可能还会存在&#xff09; main.xml <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" xmlns:tools"http://…

webservice服务器框架配置文件,java web项目(spring项目)中集成webservice ,实现对外开放接口...

什么是WebService?webService小示例 点此了解下面进入正题:Javaweb项目(spring项目)中集成webservice ,实现对外开放接口步骤:准备:采用与spring兼容性较好的cxf来实现选择zip格式下载,解压后的lib目录下的jar需要最少的jar如下:cxf-2.3.3.jargeronimo-annotation_1.0_spec-1.…

WebApi与手机客户端通信安全机制

如何保证手机客户端在请求服务器端时数据不被篡改&#xff0c;如何保证一个http请求的失效机制 基本思路如下&#xff1a; 用户在成功登陆app客户端之后&#xff0c;手机客户端向服务器端发出的所有的http请求在请求头(HttpHeader)上都会带上下面三个参数&#xff1a;1、Uid(用…

yealico小小站规则_哈佛教授研发的布鲁可积木车,玩转拼搭,学交通规则

《百变布鲁可》 是很多小朋友喜欢的热门动画片&#xff0c;在宁静的葡乐镇住着三个百变积木机器人&#xff1a;布布、鲁鲁、可可&#xff0c;他们由神奇的派博士“创造”&#xff0c;拥有着特别的力量&#xff0c;可以变身各种交通工具&#xff0c;帮助人们解决任何难题。今天给…