判断当前时间是否在某时间段内

测试类:

复制代码

/**
* 返回结果 true/false
*
*/

public static void main(String[] args) {
      
        boolean timeQuantum = timeQuantum("周四:05:50","周五:9:50");
        System.out.println(timeQuantum);

    }

复制代码

具体实现方法:

复制代码
public static boolean  timeQuantum(String stTime,String edTime){
        Calendar cal = Calendar.getInstance(); // 获得一个日历
        SimpleDateFormat sdf = new  SimpleDateFormat("yyyy-MM-dd HH:mm");//时间格式
        Date nowDate = new Date();//当前时间
        String[] sdfSplit = sdf.format(nowDate).split(" ");//固定年月日为当前时间   只比较时间
        String[] weekDays = { "周日", "周一", "周二", "周三", "周四", "周五", "周六" };//格式
        String[] stTimeSplit = stTime.split(":");//开始时间
        String[] edTimeSplit = edTime.split(":");//结束时间
        cal.setTime(nowDate);
        int w = cal.get(Calendar.DAY_OF_WEEK) - 1; // 指示一个星期中的某天。
        String nowDateWeek = weekDays[w];//当前时间星期几
        //如果开始时间大约结束时间就互换 如:周二 到周一  
     //根据传入参数,是否将此处启用
/* if(getIndex(stTimeSplit[0])>getIndex(edTimeSplit[0])){ String temp = stTimeSplit[0]; stTimeSplit[0] = edTimeSplit[0]; edTimeSplit[0] = temp; }*/ //判断当前时间 是否在时间段中 if(getIndex(nowDateWeek) >= getIndex(stTimeSplit[0]) && getIndex(nowDateWeek) <= getIndex(edTimeSplit[0])){ //是否为同一天 if(stTimeSplit[0].equals(edTimeSplit[0])){ try { Date stParse = sdf.parse(sdfSplit[0]+" "+stTimeSplit[1]+":"+stTimeSplit[2]); Date edParse = sdf.parse(sdfSplit[0]+" "+edTimeSplit[1]+":"+edTimeSplit[2]); //当前时间在时间段范围内 if(nowDate.getTime()>=stParse.getTime() && nowDate.getTime()<=edParse.getTime()){ return true; }else{ return false; } } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } //比较当前时间是否在此时间段内 }else{//不是同一天 //当前星期几等于开始星期几 或者等于结束星期几 if(getIndex(nowDateWeek)==getIndex(stTimeSplit[0]) || getIndex(nowDateWeek)==getIndex(edTimeSplit[0])){ try { Date stParse = sdf.parse(sdfSplit[0]+" "+stTimeSplit[1]+":"+stTimeSplit[2]); Date edParse = sdf.parse(sdfSplit[0]+" "+edTimeSplit[1]+":"+edTimeSplit[2]); //当前周几等于 开始周几 if(getIndex(nowDateWeek)==getIndex(stTimeSplit[0])){ if(nowDate.getTime()>=stParse.getTime()){ return true; } return false; }else{//当前周几等于 结束周几 if(nowDate.getTime()<=edParse.getTime()){ return true; } return false; } } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else{//不等于,包括在中间 当前为周三 ,开始为周一结束为周五 return true; } } } return false; } public static Integer getIndex(String week){ String[] weekDays = { "周日", "周一", "周二", "周三", "周四", "周五", "周六" };//格式 Integer index = null; for(int i = 0 ;i<weekDays.length;i++){ if(week.equals(weekDays[i])){ if(i == 0){//周日 return index = 7; } return index = i+1; } } return 0; }
复制代码

 

posted @   自信的咸鱼  阅读(4373)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示