java - 如何检查两个日期之间的时间
问题描述
我有 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
解决方案
我建议转换为 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);
}
推荐阅读
- css - ReactJs 中的图像悬停效果
- javascript - 在 Javascript 中枚举和排序多个 Promise
- javascript - Mongoose 在 Apollo-Express 服务器上抛出错误 ECONNREFUSED
- python - 按下 ctrl 和 shift 时 Pygame 未检测到 a 键
- python - Python:如何在 n 个长列表中找到三个元素的所有可能组合
- angular - 为 ApplicationRef 检测到 DI 中的循环依赖性。如何修复它
- python - 使用 cross_validate 生成混淆矩阵
- python - Django的请求处理说明-为什么它从另一个urlpattern中选择一个urlpattern
- lambda - 如何在 Lambda 函数中运行两个命令
- jmeter - jmeter 中的注册流程失败并且应用程序抛出您无法继续进行此类操作,您的 reCaptcha 信誉太低。错误