实现原理:通过定时频率判断是否在所指定的区间,还可以在所指定的区间再写一个定时器满足复杂需求
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class Snippet {
public static void main(String[] args) {
final String[] zone = "01:00-3:00".split("-");
final String[] m = zone[0].split(":");
final String[] m2 = zone[1].split(":");
new Timer().schedule(new TimerTask() {
SimpleDateFormat sFormat = new SimpleDateFormat("HH:mm");
String str = "";
@Override
public void run() {
str = sFormat.format(new Date());
if (CheackTime(m[0], m2[0], m[1], m2[1])) {
if (CheackIn(str, zone[0], zone[1])) {
System.out.println("在具体区间执行了");
}
} else {
System.exit(0);
}
}
}, 0, 1000);
}
private static boolean CheackIn(String gstr, String strt1, String strt2) {
String string1[] = strt1.split(":");
String string2[] = strt2.split(":");
String string3[] = gstr.split(":");
int tgstr = Integer.parseInt(string3[0]) * 60
+ Integer.parseInt(string3[1]);
int tstrt1 = Integer.parseInt(string1[0]) * 60
+ Integer.parseInt(string1[1]);
int tstrt2 = Integer.parseInt(string2[0]) * 60
+ Integer.parseInt(string2[1]);
if (tgstr >= tstrt1 && tgstr <= tstrt2) {
return true;
} else {
return false;
}
}
private static boolean CheackTime(String h1, String h2, String m1, String m2) {
if (Integer.parseInt(h2) < Integer.parseInt(h1)
|| Integer.parseInt(h2) < 0 || Integer.parseInt(h1) < 0
|| Integer.parseInt(h2) > 23 || Integer.parseInt(h1) > 23) {
return false;
} else if (Integer.parseInt(m2) > 60 || Integer.parseInt(m1) > 60
|| Integer.parseInt(m2) < 0 || Integer.parseInt(m1) < 0) {
return false;
} else {
return true;
}
}
}