首页 > 解决方案 > 如何检查两个日期之间的时间

问题描述

我有 2 个参数(java.util.Date),我需要检查我当前的时间是否在这两个日期之间。为此,我需要忽略我的日期,只检查我的时间。

我需要忽略yyyy/MM/dd并检查我的hh:mm:ss. 例如:

Date 1: 2008/11/10 08:05:55
Date 2: 2010/12/11 10:12:33
Current Date: 2020:09:29 09:12:13

我需要检查Date 1 <= Current Date <= Date 2

但我需要hh:mm:ss像这样检查:

08:05:55 <= 09:12:13 <= 10:12:33 = True

忽略 yyyy/MM/dd

标签: javaspring-boot

解决方案


我建议转换为 Java 8 时间 API 对象并使用它们直观的方法。

以下是我整理的一些实用方法供您使用:

public static boolean nowIsBetweenInclusive(Date start, Date end) {
  return timeIsBetweenInclusive(LocalTime.now(), asLocalTime(start), asLocalTime(end));
}

public static LocalTime asLocalTime(@NonNull Date date) {
  return date.toInstant().atZone(ZoneId.systemDefault()).toLocalTime();
}

public static boolean timeIsBetweenInclusive(@NotNull LocalTime time, LocalTime start, LocalTime end) {
  return start != null && end != null && !time.isBefore(start) && !time.isAfter(end);
}

推荐阅读