Java判断时间间隔来决定任务执行

数据库中的任务记录表的某条记录,状态一直无法变更,导致整个任务进程卡住,看了代码如下,
Java判断时间间隔来决定任务执行_第1张图片正常情况是要走到这个else里面,执行dockingGroup.setStatus(JobStatus.FAILED.getCode());将任务状态改为失败的
,查了一下until的用法:
通过gpt可以知道:
Java判断时间间隔来决定任务执行_第2张图片

通过代码字面意思也能看出,是时间相差900秒以上的意思,但是很奇怪,没有改变状态,这里我试了一下:
Java判断时间间隔来决定任务执行_第3张图片
Java判断时间间隔来决定任务执行_第4张图片
实体类对象为LocalDateTime,数据库为datetime
任务更新时间为2023-09-13 15:35:40
main方法如下:

 public static void main(String[] args) throws ParseException {

        String timeString = "2023-09-13 15:35:40";
        LocalDateTime localDateTime = LocalDateTime.parse(timeString, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        LocalDateTime now = LocalDateTime.now();
        if (LocalDateTime.now().until(localDateTime, ChronoUnit.SECONDS) > 900){
            System.out.println("已经超时");
        }else {
            System.out.println("未超时");
        }
    }

将任务日期格式化为LocalDateTime对象,再进行比较
今天已经14号,理论上肯定是超时的,运行结果如下:
Java判断时间间隔来决定任务执行_第5张图片
很奇怪,都间隔两天了,竟然显示未超时,后来发现,参数的顺序反了:
Java判断时间间隔来决定任务执行_第6张图片
这里就像做减法,一定要注意顺序, 例如 9和5之间的间隔一定大于2,9-5>2没毛病但是5-9>2肯定不成立的

你可能感兴趣的:(work,java踩坑之路,java,数据库,开发语言)