中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

java怎么設置每天固定時間

小億
169
2023-10-26 16:22:04
欄目: 編程語言

在Java中設置每天固定時間可以使用Java的定時任務工具類,如Timer和ScheduledExecutorService。

使用Timer類可以在指定時間執行某個任務。以下是一個示例代碼:

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class DailyTask {
    public static void main(String[] args) {
        // 創建一個Timer實例
        Timer timer = new Timer();

        // 獲取當前時間
        Calendar currentTime = Calendar.getInstance();
        currentTime.setTime(new Date());

        // 設置每天固定時間的小時和分鐘
        int hour = 9;
        int minute = 0;

        // 設置任務執行時間
        Calendar scheduledTime = Calendar.getInstance();
        scheduledTime.set(Calendar.HOUR_OF_DAY, hour);
        scheduledTime.set(Calendar.MINUTE, minute);
        scheduledTime.set(Calendar.SECOND, 0);

        // 如果當前時間已經超過了設定的時間,則將執行時間設置為明天的同一時間
        if (currentTime.after(scheduledTime)) {
            scheduledTime.add(Calendar.DATE, 1);
        }

        // 計算任務首次執行的延遲時間
        long delay = scheduledTime.getTimeInMillis() - currentTime.getTimeInMillis();

        // 創建一個定時任務
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                // 在這里定義每天固定時間要執行的任務
                System.out.println("任務執行時間:" + new Date());
            }
        };

        // 啟動定時任務
        timer.schedule(task, delay, 24 * 60 * 60 * 1000);
    }
}

使用ScheduledExecutorService類也可以實現每天固定時間的任務調度。以下是一個示例代碼:

import java.time.LocalTime;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class DailyTask {
    public static void main(String[] args) {
        // 創建一個ScheduledExecutorService實例
        ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

        // 設置每天固定時間的小時和分鐘
        int hour = 9;
        int minute = 0;

        // 獲取當前時間
        LocalTime currentTime = LocalTime.now();

        // 計算任務首次執行的延遲時間
        long initialDelay = LocalTime.of(hour, minute).toSecondOfDay() - currentTime.toSecondOfDay();
        if (initialDelay < 0) {
            initialDelay += 24 * 60 * 60; // 添加一天的秒數
        }

        // 創建一個定時任務
        Runnable task = () -> {
            // 在這里定義每天固定時間要執行的任務
            System.out.println("任務執行時間:" + LocalTime.now());
        };

        // 啟動定時任務
        scheduler.scheduleAtFixedRate(task, initialDelay, 24 * 60 * 60, TimeUnit.SECONDS);
    }
}

上述代碼中,使用LocalTime類來表示時間,計算任務首次執行的延遲時間,以及在任務中獲取當前時間。使用ScheduledExecutorService的scheduleAtFixedRate方法來啟動定時任務,并指定任務的首次執行延遲時間和執行周期。

0
呼伦贝尔市| 浠水县| 宁都县| 南宫市| 开远市| 永靖县| 察隅县| 沙湾县| 仁怀市| 秭归县| 铁岭县| 澎湖县| 松溪县| 华亭县| 德昌县| 长兴县| 凌云县| 武威市| 布尔津县| 光泽县| 昌都县| 胶南市| 和静县| 邢台市| 大兴区| 延津县| 郸城县| 宁海县| 宝山区| 南康市| 洪洞县| 托克托县| 新蔡县| 谷城县| 星子县| 漳浦县| 呼和浩特市| 海伦市| 扶风县| 贵港市| 桓仁|