这里可以通过工具类ChronoUnit,两个时间进行相减。
//LocalDateTime 类型可以获得日期和时间.则是分开的,也可以作为一个使用.
String arrivalTime = "2023-06-07 05:03:19";
String operationTime= "2023-06-07 05:03:19";
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime operationTimeDate = LocalDateTime.parse(operationTime,dateTimeFormatter);
LocalDateTime arrivalTimeDate = LocalDateTime.parse(arrivalTime,dateTimeFormatter);
//判断某个时间减去某个时间差,是日期相减.
int fromaDate = (int)ChronoUnit.DAYS.between(operationTimeDate.toLocalDate(), arrivalTimeDate.toLocalDate());
这里可以直接判断一个时间,是否在这个时间的范围内。这个非常重要,很多地方可以直接使用到。
//判断某个时间是否在某个时间范围内,如果在返回true,不在返回false.
boolean bool = timeIsInRound("05:02:53", "00:00:00 - 07:00:00");
/**
* 判断时间是否在时间段内
*/
public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) {
Calendar date = Calendar.getInstance();
date.setTime(nowTime);
Calendar begin = Calendar.getInstance();
begin.setTime(beginTime);
Calendar end = Calendar.getInstance();
end.setTime(endTime);
return date.after(begin) && date.before(end);
}
/**
* 比较一个 HH:mm:ss 是否在一个时间段内
* 如:14:33:00 是否在 09:30:00 和 12:00:00 内
*/
public static boolean timeIsInRound(String str1, String start, String end) {
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
Date now = null;
Date beginTime = null;
Date endTime = null;
try {
now = df.parse(str1);
beginTime = df.parse(start);
endTime = df.parse(end);
} catch (Exception e) {
e.printStackTrace();
}
return belongCalendar(now, beginTime, endTime);
}
/**
* 14:33:00 是否在 09:30:00 - 12:00:00 内
*
* @param str1 14:33:00
* @param round 09:30:00 - 12:00:00
*/
public static boolean timeIsInRound(String str1, String round) {
String[] roundTime = round.split("-");
return timeIsInRound(str1, roundTime[0], roundTime[1]);
}