timer 0点到1点不执行怎么做
时间: 2024-03-16 19:43:32 浏览: 13
如果你想让 Timer 定时任务在每天的 0 点到 1 点之间不执行,可以在 Timer 的任务执行方法中加入时间判断,如果当前时间在 0 点到 1 点之间,则直接退出方法,不执行后续的逻辑。
下面是一个示例代码:
```java
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
public class MyTimerTask extends TimerTask {
@Override
public void run() {
Calendar now = Calendar.getInstance();
int hour = now.get(Calendar.HOUR_OF_DAY);
if (hour >= 0 && hour < 1) {
// 如果当前时间在 0 点到 1 点之间,则直接退出方法,不执行后续的逻辑
return;
}
// 执行定时任务的逻辑
}
}
public class Main {
public static void main(String[] args) {
Timer timer = new Timer();
// 在每天的 0 点开始执行定时任务,间隔时间为 24 小时
timer.schedule(new MyTimerTask(), getFirstTime(), 24 * 60 * 60 * 1000);
}
private static Date getFirstTime() {
Calendar now = Calendar.getInstance();
now.set(Calendar.HOUR_OF_DAY, 1);
now.set(Calendar.MINUTE, 0);
now.set(Calendar.SECOND, 0);
now.set(Calendar.MILLISECOND, 0);
if (now.before(Calendar.getInstance())) {
now.add(Calendar.DATE, 1);
}
return now.getTime();
}
}
```
在上面的代码中,我们定义了一个 MyTimerTask 类,继承了 TimerTask 类,并重写了 run() 方法。在 run() 方法中,我们先获取当前时间的小时数,如果当前时间在 0 点到 1 点之间,则直接退出方法,不执行后续的逻辑。否则,执行定时任务的逻辑。
在 Main 类的 main() 方法中,我们创建了一个 Timer 对象,使用 schedule() 方法来启动定时任务。我们设置了定时任务的执行时间为每天的 1 点,间隔时间为 24 小时。在 getFirstTime() 方法中,我们获取了下一次定时任务的执行时间,如果当前时间已经过了 1 点,则将执行时间设置为明天的 1 点。这样就可以保证定时任务每天只在指定的时间段外执行了。