前言:我现有个定时任务 每天上午10下午4点查一次表有没有录入新数据进来 有时候录半天就没录入了 所以还得知道他是不是新数据 得知道这条数据的时间在没在当前时间左右范围内 在的话就还在正常录入 。
目录
1.所需条件
2.将这三个进行转换类型
3.做条件判断
4.整体代码
1.所需条件
你得确保有三时间作为条件 区间数据 (就是我们最新查到的数据的最新时间), 当前时间的前一个小时时间, 当前时间。(这个区间数据时间是我来测试的 你们得查最新数据的时间)
SQL如下:
含义如下:
SELECT date_sub(now(), interval 1 huor); //就是当前时间的前的一小时间
//(date:时间 sub 减去 interval:间隔 hour :小时)
//这里我设置的一个小时 你们也可以设置长一点都可以
SELECT SYSDATE(); //查询系统当前时间 (就是你电脑时间)
2.将这三个进行转换类型
3.做条件判断
- (当前时间的前一个小时作为) 开始时间
- (我们的新数据时间作为) 区间时间
- (当前时间作为) 结束时间
将这个三个都setTime一下之后,
进行判断 意思就是你查的这个区间数据 有没有在开始时间 和 结束时间 之间 是的话就会进 在区间里!!!
可以看到最新数据时间在 开始时间 和 结束时间 之间 所以他是最新录入进来的数据。文章来源:https://www.toymoban.com/news/detail-426141.html
4.整体代码
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addTriggerTask(
//1.添加任务内容(Runnable)
() -> System.out.println("执行动态定时任务: " + LocalDateTime.now().toLocalTime()),
//2.设置执行周期(Trigger)
triggerContext -> {
//2.1 从数据库获取执行周期
String cron = aitravelCheckInfoService.selectCron();
System.out.println(cron);
String cs = "2023-03-14 01:30:00";//区间数据时间
System.out.println(cs);
String kaishi = aitravelCheckInfoService.kaishi();//当前时间的前一个小时
System.out.println(kaishi);
String dangqian = aitravelCheckInfoService.dangqian();//当前时间
System.out.println(dangqian);
String zong = aitravelCheckInfoService.zong();
System.out.println(zong);
int i = Integer.parseInt(zong);
if (i==0){
HttpServletResponse response = null;
this.sendCaptcha(response, "19176928269");
}else{
//String转Date
try {
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date wcha =ft.parse(cs);//区间数据时间(String 转 Date)
System.out.println(wcha);
Date kaishi1 =ft.parse(kaishi);//当前时间往前推一个小时(String 转 Date)
System.out.println(kaishi1);
Date dangqian1 =ft.parse(dangqian);//当前时间(String 转 Date)
System.out.println(dangqian1);
Calendar dateC = Calendar.getInstance();
dateC.setTime(wcha);//区间数据时间
System.out.println(dateC);
Calendar begin = Calendar.getInstance();
begin.setTime(kaishi1);//开始时间
Calendar end = Calendar.getInstance();
end.setTime(dangqian1);//结束时间
if (dateC.after(begin) && dateC.before(end)) {
System.out.println("在区间里");
}else{
System.out.println("不在区间里");
HttpServletResponse response = null;
this.sendCaptcha(response, "19176928269");
}
} catch (ParseException e) {
e.printStackTrace();
}
}
//2.3 返回执行周期(Date)
return new CronTrigger(cron).nextExecutionTime(triggerContext);
}
);
}
最后希望能帮助到你。文章来源地址https://www.toymoban.com/news/detail-426141.html
到了这里,关于Java判断一个时间是否在当前时间区间!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!