java-定时指定时间执行、calendar.set(year, month, day, 8, 27, 00)设置无效

文章描述了一个使用Java编程实现的定时任务,通过`TimerTask`和`Calendar`类定制每天8:30,18:00,和20:30三个时间点的执行。作者还提到一个bug,即8:27的定时设置无效,需调整为仅设置小时和分钟。
摘要由CSDN通过智能技术生成

定时指定时间执行


        TimerTask clockinTask2030 = new TimerTask() {
            @Override
            public void run() {
                Platform.runLater(new Runnable() {
                    @Override
                    public void run() {
                        showWindowAlert("大哥看下手机打卡了,晚上20点30分打卡了,不看就要走流程了");
                    }
                });
            }
        };

        //设置执行时间
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);
        int day = calendar.get(Calendar.DAY_OF_MONTH);//每天

        //定制每天的08:30:00执行,
        calendar.set(year, month, day, 8, 27, 00);
        Date date = calendar.getTime();

        //创建定时器
        Timer clockinTimer = new Timer();
        //设置的定时器 period(每隔多长时间运行几次) 单位毫秒
        clockinTimer.schedule(clockinTask0830, date);

        //定制每天的18:00:00执行,
        calendar.set(year, month, day, 17, 57, 00);
        Date date1800 = calendar.getTime();
        clockinTimer.schedule(clockinTask1800, date1800);

        //20:30:00执行,
        calendar.set(year, month, day, 20, 27, 00);
        Date date2030 = calendar.getTime();
        clockinTimer.schedule(clockinTask2030, date2030);
        logger.info("start clockin message");

calendar.set(year, month, day, 8, 27, 00)设置无效,

到现在原因不明,运行程序会立即执行,将calendar.set(year, month, day, 8, 27, 00)修改为
这里不设置年月日,就表示今天的
calendar.set(Calendar.HOUR_OF_DAY, 8);
calendar.set(Calendar.MINUTE, 87);
calendar.set(Calendar.SECOND, 00);

calendar.set(Calendar.MONTH, 11)需要注意

calendar.set(Calendar.MONTH, 11)设定是12月
calendar.set(Calendar.MONTH, 12)设定的是1月
可以如下方法查看是否正确

calendar.set(Calendar.MONTH, 11)
System.out.println(calendar.getTime().toString());
输出
Tue Dec 26 12:05:50 CST 2023
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值