用Calendar定时


 Calendar calendar = Calendar.getInstance();//使用默认时区和语言环境获得一个日历
        // 创建Calendar对象
        Calendar cal = Calendar.getInstance();
        // 设置年
        int year = cal.get(Calendar.YEAR);
        // 设置月
        int month = cal.get(Calendar.MONTH) + 1;
        // 设置日
        int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
        int hour = cal.get(Calendar.HOUR);
        int minute = cal.get(Calendar.MINUTE);
        System.out.print(year + "年" + month + "月" + dayOfMonth + "日" + hour + "点" + minute + "分");
        while (true) {
            if ((year == 2022) && (month == 12) && (dayOfMonth == 23)
                    && (hour == 2) && (minute == 16)) {
                System.out.println("女朋友生日快乐");
                break;
            }

用Calendar定时导致无限循环

你的这个cal定义要放到while里面,不然会一直是同一个值,这边改了一版,加了个sleep,并且改成了24小时制,你可以参考下

        while (true) {
            // 创建Calendar对象
            Calendar cal = Calendar.getInstance();
            // 设置年
            int year = cal.get(Calendar.YEAR);
            // 设置月
            int month = cal.get(Calendar.MONTH) + 1;
            // 设置日
            int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
            int hourOfDay = cal.get(Calendar.HOUR_OF_DAY);
            int minute = cal.get(Calendar.MINUTE);
            System.out.println(year + "年" + month + "月" + dayOfMonth + "日" + hourOfDay + "点" + minute + "分");

            if ((year == 2022) && (month == 12) && (dayOfMonth == 23)
                    && (hourOfDay == 16) && (minute == 10)) {
                System.out.println("女朋友生日快乐");
                break;
            }

            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }

望采纳

  • Calendar 类本身不具有定时功能,因此要实现定时功能,可以使用 Timer 类或线程休眠的方法,将 Calendar 对象的时间增加一段时间(例如一秒)后再检查时间是否符合要求。

代码如下:

Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);

Timer timer = new Timer();
timer.schedule(new TimerTask() {
    @Override
    public void run() {
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1;
        int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        int minute = calendar.get(Calendar.MINUTE);

        if ((year == 2022) && (month == 12) && (dayOfMonth == 23)
                && (hour == 2) && (minute == 16)) {
            System.out.println("女朋友生日快乐");
            timer.cancel();  // 停止计时器
        }
    }
}, 0, 1000);  // 每隔一秒执行一次