新建一个定时任务 获取当前时间 和查询来的 endtIme比对 如果时间差在1个月内——每5天提醒一次; 15天内——每2天提醒一次; 时间差15天内——每2天提醒一次;时间差在7天内——每天提醒一次; 时间差在1天内——每次登录提醒; java
时间: 2023-07-29 12:11:25 浏览: 108
下面是一个简单的Java程序,可以根据要求创建定时任务,获取当前时间和查询到的endTime进行比对,并根据时间差不同提醒的频率不同。
```java
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class Reminder {
private Date endTime; // 查询到的endTime
public Reminder(Date endTime) {
this.endTime = endTime;
}
public void start() {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
Date currentTime = new Date();
long diff = endTime.getTime() - currentTime.getTime();
int days = (int) (diff / (1000 * 60 * 60 * 24));
if (days > 30) { // 时间差在1个月以上,每5天提醒一次
if (days % 5 == 0) {
remind();
}
} else if (days > 15) { // 时间差在15天以上,每2天提醒一次
if (days % 2 == 0) {
remind();
}
} else if (days > 7) { // 时间差在7天以上,每天提醒一次
remind();
} else if (days > 1) { // 时间差在1天以上,每次登录提醒
remindOnce();
} else { // 时间差在1天内,每次登录提醒
remindOnce();
}
}
};
// 每10秒钟执行一次定时任务
timer.schedule(task, 0, 10000);
}
private void remind() {
// 每次提醒的具体实现
System.out.println("Reminder: Time to do something!");
}
private void remindOnce() {
// 每次登录提醒的具体实现
System.out.println("Reminder: Don't forget to do something!");
}
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar calendar = Calendar.getInstance();
// 设置查询到的endTime为2022年1月1日
calendar.set(2022, Calendar.JANUARY, 1, 0, 0, 0);
Date endTime = calendar.getTime();
Reminder reminder = new Reminder(endTime);
reminder.start();
}
}
```
在上面的程序中,我们使用`java.util.Timer`和`java.util.TimerTask`来创建定时任务。在`start()`方法中,我们定义了一个`Timer`和一个`TimerTask`,并使用`timer.schedule(task, 0, 10000)`来设置定时任务的执行时间和频率。这里我们将定时任务的执行时间设置为0,表示从当前时间开始执行,每10秒钟执行一次。
在`run()`方法中,我们首先获取当前时间和查询到的endTime,并计算它们之间的时间差(以天为单位)。接着根据时间差的大小,确定提醒的频率。如果时间差在1个月以上,则每5天提醒一次;如果时间差在15天以上,则每2天提醒一次;如果时间差在7天以上,则每天提醒一次;如果时间差在1天以上,则每次登录提醒;如果时间差在1天内,则每次登录提醒。
在`remind()`和`remindOnce()`方法中,我们可以实现具体的提醒逻辑。在本例中,我们只是简单地输出一些提示信息,你可以根据自己的实际需求进行修改。
阅读全文