1. 程式人生 > >Timer定時器每天的固定時間執行

Timer定時器每天的固定時間執行

在網上看了好多介紹定時任務的方法,但是在使用的時候,如果當前時間是9:00,定時任務執行時間是8:59
就會造成在9點執行的程式的時候直接執行定時器中的方法。
Tip:定時器超時還執行。如下程式碼解決了這個問題

public class SandTimer {
    public void timerRun() {
        // 一天的毫秒數
        long daySpan = 24 * 60 * 60 * 1000;
        // 規定的每天時間15:33:30執行
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 09:16:00"
); // 首次執行時間 try { Date startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(sdf.format(new Date())); // 如果今天的已經過了 首次執行時間就改為明天 if (System.currentTimeMillis() > startTime.getTime()){ startTime = new Date(startTime.getTime() + daySpan); } Timer t = new
Timer(); TimerTask task = new TimerTask() { @Override public void run() { System.out.print("定時器執行"); } }; // 以每24小時執行一次 t.schedule(task, startTime, daySpan); } catch (Exception e) { e.printStackTrace(); } } public
static void main(String[] args) { new SandTimer().timerRun(); }