@Scheduled(cron = "0 0 0/1 * * ? ")
0:第0秒
0:第0分
0/1:第0时开始,每隔1小时执行一次
*:日期,当前月每一天
*:月,每一个月
?:星期,避免与日期冲突使用;如果这里指定值,则日期使用 ?
/**
* 每天执行一次,每天晚上12点
*/
@Scheduled(cron = "0 0 0/1 * * ? ")
public void dingShi() {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
List<DemoEntity> demoEntityList = demoService.list();//查询出全部信息
for (DemoEntitye e : demoEntityList ) {
if (e.getStatus() != 2) {//状态判断
Date createDate = DateUtil.date(e.getCreateTime());//获取创建时间
DateTime endDateTime = DateUtil.offsetMinute(createDate, e.getValidDate() * 24 * 60);//获取过期的时间 这里是按分钟计算的
long timestamp = System.currentTimeMillis();
Date nowDateTime = DateUtil.date(timestamp);//获取系统当前时间
if (nowDateTime.compareTo(endDateTime) == 0 || nowDateTime.compareTo(endDateTime) < 0) {//相等或者当前时间在后
e.setStatus(2);//修改信息状态为过期
e.setId(e.getId());//找到过期信息的唯一id
demoService.updateById(e);//修改
} else {
System.err.println("现在的时间是:" + nowDateTime + "过期的时间是:" + endDateTime);
}
}
}
}
}, 0, 1000 * 60 * 60 * 24);//0表示无延迟
}