有时候会有这种需求,客户要求有这么一张表如下:
在允许时间范围内可以调用这个接口,这个时间段是用户手动配置的,格式是 时分秒。
思路就是获取当时时间 时分秒,转换成秒或者需要的精度,去跟数据库这个时间段相互比较大小,下面是写了一个工具类和测试demo,测试可行,记录一下
/**
* 比较两个时间 时分秒 大小
* @param s1
* @param s2
* @return
*/
public static boolean compTime(String s1,String s2){
try {
if (s1.indexOf(":")<0||s1.indexOf(":")<0) {
System.out.println("格式不正确");
}else{
String[]array1 = s1.split(":");
int total1 = Integer.valueOf(array1[0])*3600+Integer.valueOf(array1[1])*60+Integer.valueOf(array1[2]);
String[]array2 = s2.split(":");
int total2 = Integer.valueOf(array2[0])*3600+Integer.valueOf(array2[1])*60+Integer.valueOf(array2[2]);
return total1-total2>0?true:false;
}
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
return true;
}
return false;
}
//当前时间 时分秒
GregorianCalendar calendar = new GregorianCalendar();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
String hour_str=String.valueOf(hour);
String minute_str=String.valueOf(minute);
String second_str=String.valueOf(second);
String nowTime=hour_str+":"+minute_str+":"+second_str;
System.out.println("nowTime === " + nowTime);
boolean startT= compTime(nowTime,startTime);
boolean endT= compTime(nowTime,endTime);
if(startT&&!endT){
System.out.println("在允许时间范围内 == " + nowTime);
return true;
}