数据库中的任务记录表的某条记录,状态一直无法变更,导致整个任务进程卡住,看了代码如下,
正常情况是要走到这个else里面,执行dockingGroup.setStatus(JobStatus.FAILED.getCode());
将任务状态改为失败的
,查了一下until
的用法:
通过gpt可以知道:
通过代码字面意思也能看出,是时间相差900秒以上的意思,但是很奇怪,没有改变状态,这里我试了一下:
实体类对象为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号,理论上肯定是超时的,运行结果如下:
很奇怪,都间隔两天了,竟然显示未超时,后来发现,参数的顺序反了:
这里就像做减法,一定要注意顺序, 例如 9和5之间的间隔一定大于2,9-5>2没毛病但是5-9>2肯定不成立的