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