判断当前时间是否在特定时间段内(时分秒)

265 阅读1分钟

传入两个时间,如:10:22:00

private  boolean compTime(String s1, String s2){
   try {
      if (s1.indexOf(":") < 0 || s2.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) {
      return true;
   }
}

获取当前的时间时分秒并转化

String startTime1 = "10:00:00"
String endTime1 = "12:00:00";

//当前时间   时分秒
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;

boolean startT= compTime(nowTime, startTime1);
boolean endT= compTime(nowTime, endTime1);

if(!(startT&&!endT)){
    System.out.println("当前时间不符合要求");
}

如果 数据库时间的类型为字符串的话 也可以使用sql来完成区间查询

SELECT
	* 
FROM
	tb_activity_seckill_time 
WHERE
	date_format( now(), '%T' ) BETWEEN start_time AND end_time 
	AND is_deleted = 0 

可以根据自己的业务需求进行调整