Java判斷當前日期是否在周幾到周幾時間范圍內


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;
    }
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM