zoukankan      html  css  js  c++  java
  • SpringBoot定时器任务,每月一号执行

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.ApplicationArguments;
    import org.springframework.boot.ApplicationRunner;
    import org.springframework.stereotype.Component;
    import java.text.SimpleDateFormat;
    import java.util.*;
    
    @Component
    public class TimerUtil implements ApplicationRunner {
    
        //时间间隔(一天)
        private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;
    
        @Override
        public void run(ApplicationArguments args) throws Exception {
    
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.HOUR_OF_DAY, 1); //凌晨1点
            calendar.set(Calendar.MINUTE, 0);//0分
            calendar.set(Calendar.SECOND, 0);//0秒
    
            Date date = calendar.getTime(); //第一次执行定时任务的时间
    
            //如果第一次执行定时任务的时间 小于当前的时间
            //此时要在 第一次执行定时任务的时间加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。
            if (date.before(new Date())) {
                date = this.addDay(date, 1);
            }
    
            Timer tt = new Timer();//定时类
            tt.schedule(new TimerTask() {
                @Override
                public void run() {
                    if (day == 1){//一号执行
                        //需定时执行的代码
                    }
                }
            }, date, PERIOD_DAY);//从date开始,每隔PERIOD_DAY执行一次
        }
    
        // 增加或减少天数
        public Date addDay(Date date, int num) {
            Calendar startDT = Calendar.getInstance();
            startDT.setTime(date);
            startDT.add(Calendar.DAY_OF_MONTH, num);
            return startDT.getTime();
        }
    
    }
    
    
  • 相关阅读:
    C/C++的区别
    stm32之UCOS-III
    PID控制及整定算法
    PCB设计基础及技巧
    电路的一些基本理论
    stm32与三菱PLC通信
    stm32之外设控制
    stm32之内部功能
    JavaScript数组方法详解
    git新建关联克隆仓库指令
  • 原文地址:https://www.cnblogs.com/gkgkgk/p/15040235.html
Copyright © 2011-2022 走看看