Java判断当前日期是否在周几到周几时间范围内

2019/11/21 16:49
阅读数 141
public class demo {
    public static void main(String[] args) throws UnsupportedEncodingException {
        String stTime = "周六:10:10";
        String edTime = "周日:15:45";
        System.out.println(timeQuantum(stTime,edTime));
    }
    
    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;
            }
        }
        return 0;
    }
}

  

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部