|
@@ -0,0 +1,99 @@
|
|
|
+package com.chelvc.cloud.vehicle.server.task;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Calendar;
|
|
|
+import java.util.Date;
|
|
|
+
|
|
|
+public class DateUtil {
|
|
|
+ public static void main(String[] args) {
|
|
|
+ String timeData = "星期二至星期二: 09:00~23:00";
|
|
|
+ System.out.println(timeQuantum(timeData));
|
|
|
+ }
|
|
|
+
|
|
|
+ public static boolean timeQuantum(String timeData){
|
|
|
+ Calendar cal = Calendar.getInstance(); // 获得一个日历
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");//时间格式
|
|
|
+ Date nowDate = new Date();//当前时间
|
|
|
+ String[] sdfSplit = sdf.format(nowDate).split(" ");//固定年月日为当前时间 只比较时间
|
|
|
+ String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };//格式
|
|
|
+ String[] weekAndTime = timeData.split(": ");
|
|
|
+ String[] weeks = weekAndTime[0].split("至");
|
|
|
+ String[] times = weekAndTime[1].split("~");
|
|
|
+ cal.setTime(nowDate);
|
|
|
+ int w = cal.get(Calendar.DAY_OF_WEEK) - 1; // 指示一个星期中的某天。
|
|
|
+ String nowDateWeek = weekDays[w];//当前时间星期几
|
|
|
+ //如果开始时间大约结束时间就互换 如:星期二 到星期一
|
|
|
+ if(getIndex(weeks[0])>getIndex(weeks[1])){
|
|
|
+ String temp = weeks[0];
|
|
|
+ weeks[0] = weeks[1];
|
|
|
+ weeks[1] = temp;
|
|
|
+ }
|
|
|
+ //判断当前时间 是否在时间段中
|
|
|
+ if(getIndex(nowDateWeek) >= getIndex(weeks[0]) && getIndex(nowDateWeek) <= getIndex(weeks[1])){
|
|
|
+ //是否为同一天
|
|
|
+ if(weeks[0].equals(weeks[1])){
|
|
|
+ //当前时间在时间段范围内
|
|
|
+ if(isTimeBetween(times[0],times[1])){
|
|
|
+ return true;
|
|
|
+ }else{
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ //比较当前时间是否在此时间段内
|
|
|
+ }else{//不是同一天
|
|
|
+ //当前星期几等于开始星期几 或者等于结束星期几
|
|
|
+ if(getIndex(nowDateWeek)==getIndex(weeks[0]) || getIndex(nowDateWeek)==getIndex(weeks[1])){
|
|
|
+ //当前星期几等于 开始星期几
|
|
|
+ if(getIndex(nowDateWeek)==getIndex(weeks[0])){
|
|
|
+ if(isTimeBetween(times[0],times[1])){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }else{//当前星期几等于 结束星期几
|
|
|
+ if(isTimeBetween(times[0],times[1])){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }else{//不等于,包括在中间 当前为星期三 ,开始为星期一结束为星期五
|
|
|
+ if(isTimeBetween(times[0],times[1])){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static boolean isTimeBetween(String startTime,String endTime) {
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ String[] startTimes = startTime.split(":");
|
|
|
+ String[] endTimes = endTime.split(":");
|
|
|
+ int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
|
|
|
+ int hour = calendar.get(Calendar.HOUR_OF_DAY);
|
|
|
+ int minute = calendar.get(Calendar.MINUTE);
|
|
|
+
|
|
|
+ if (dayOfWeek >= Calendar.MONDAY && dayOfWeek <= Calendar.SATURDAY) {
|
|
|
+ if (hour == Integer.valueOf(startTimes[0]) && minute >= Integer.valueOf(startTimes[1]) || hour > Integer.valueOf(startTimes[0]) || (hour == Integer.valueOf(startTimes[0]) && minute == Integer.valueOf(startTimes[1]))) {
|
|
|
+ if (hour == Integer.valueOf(endTimes[0]) && minute <= Integer.valueOf(endTimes[1]) || hour < Integer.valueOf(endTimes[0]) || (hour == Integer.valueOf(endTimes[0]) && minute == Integer.valueOf(endTimes[1]))) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+}
|