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;
    }
}
相關文章
相關標籤/搜索