import com.alibaba.fastjson.JSON;
import com.google.common.collect.Range;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
public class Test2 {
public static void main(String[] args) throws ParseException {
Boolean xsTime = isXsTime(5, "{\"startTime1\":\"2021-11-10 12:01:03 - 2021-11-11 00:00:00\",\"startTime2\":\"2021-12-24 02:02:02 - 2021-12-27 05:04:03\"}","2021-12-28 05:00:00");
System.out.println(xsTime);
}
/**
* 判断当前时间是否在设置的周期之内
* @param zqDay 周期天数
* @param timeDiyJson 不同的时间段 json
* @param currentTime 当前的时间
* @return 结果
*/
public static Boolean isXsTime(Integer zqDay, String timeDiyJson, String currentTime) throws ParseException {
Map mapTypes = JSON.parseObject(timeDiyJson);
Boolean isOK = false;
for (Object obj : mapTypes.keySet()) {
String time = (String) mapTypes.get(obj);
String[] zqTime = time.split(" - ");
if (zqTime != null && zqTime.length > 1) {
String startTime = zqTime[0];
String endTime = zqTime[1];
DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//三个时间分别初始化
Calendar start = Calendar.getInstance();
Calendar end = Calendar.getInstance();
Calendar currentT = Calendar.getInstance();
currentT.setTime(format.parse(currentTime));
start.setTime(format.parse(startTime));
end.setTime(format.parse(endTime));
// 只有当前的时间大于开始的时间
while (!currentT.before(start)) {
//判断当前的时间是否在于时间范围内
boolean isPoint = Range.closed(start, end).contains(currentT);
if(isPoint){
isOK = isPoint;
break;
}
//没有在范围内 ,移动周期
start.add(Calendar.DATE, zqDay);
end.add(Calendar.DATE, zqDay);
}
}
}
return isOK;
}
}