下面我就来详细讲解一下 "Java 判断一个时间是否在另一个时间段内" 的完整攻略。
1. 获取时间和时间段
首先,我们需要获取到我们要比较的时间和时间段。在Java中,可以使用以下两种方式来获取时间和时间段:
(1)Date类型
Java中Date类表示一个时间点,可以使用new Date()
来获取当前时间。如果需要指定具体的时间可以使用new Date(long date)
,其中参数date表示毫秒数。
时间段可以用两个Date对象来表示,分别是开始时间和结束时间。
(2)LocalDateTime类型
Java8引入了新的日期时间API,其中LocalDateTime类表示一个本地时间,可以使用LocalDateTime.now()
来获取当前本地时间。如果需要指定具体的时间可以使用LocalDateTime.of(int year, int month, int dayOfMonth, int hour, int minute, int second)
,其中year, month, dayOfMonth, hour, minute, second为指定的时间参数。
时间段可以用两个LocalDateTime对象来表示,分别是开始时间和结束时间。
2. 判断时间是否在时间段内
有了时间和时间段,接下来就是如何判断一个时间是否在另一个时间段内了。具体实现可以采用以下两种方式:
(1)使用Date类型实现
以判断当前时间是否在某个时间段内为例,首先将时间段的开始时间和结束时间转化为毫秒数,然后将当前时间转化为毫秒数,最后判断当前时间是否在时间段内。
示例代码如下:
public static boolean isTimeInRange(Date startTime, Date endTime) {
long start = startTime.getTime();
long end = endTime.getTime();
long currentTime = System.currentTimeMillis();
return currentTime >= start && currentTime <= end;
}
(2)使用LocalDateTime类型实现
以判断当前时间是否在某个时间段内为例,首先将时间段的开始时间和结束时间转化为LocalDateTime对象,然后将当前时间转化为LocalDateTime对象,最后判断当前时间是否在时间段内。
示例代码如下:
public static boolean isTimeInRange(LocalDateTime startTime, LocalDateTime endTime) {
LocalDateTime current = LocalDateTime.now();
return current.isEqual(startTime) || current.isAfter(startTime)) && current.isBefore(endTime);
}
3. 完整示例
下面给出完整的示例代码,包括了获取时间和时间段,以及两种判断方法:
import java.time.LocalDateTime;
import java.util.Date;
public class DateRangeDemo {
public static void main(String[] args) {
// 使用Date类型获取时间和时间段
Date now = new Date();
Date startTime = new Date(System.currentTimeMillis() - 3600000L); // 开始时间为当前时间前一小时
Date endTime = new Date(System.currentTimeMillis() + 3600000L); // 结束时间为当前时间后一小时
// 判断当前时间是否在时间段内
boolean isInRange1 = isTimeInRange(startTime, endTime);
// 使用LocalDateTime类型获取时间和时间段
LocalDateTime now2 = LocalDateTime.now();
LocalDateTime startTime2 = now2.minusHours(1); // 开始时间为当前时间前一小时
LocalDateTime endTime2 = now2.plusHours(1); // 结束时间为当前时间后一小时
// 判断当前时间是否在时间段内
boolean isInRange2 = isTimeInRange(startTime2, endTime2);
System.out.println("当前时间:" + now);
System.out.println("时间段:" + startTime + " ~ " + endTime);
System.out.println("是否在时间段内:" + isInRange1);
System.out.println("当前时间:" + now2);
System.out.println("时间段:" + startTime2 + " ~ " + endTime2);
System.out.println("是否在时间段内:" + isInRange2);
}
// Date类型判断方法
public static boolean isTimeInRange(Date startTime, Date endTime) {
long start = startTime.getTime();
long end = endTime.getTime();
long currentTime = System.currentTimeMillis();
return currentTime >= start && currentTime <= end;
}
// LocalDateTime类型判断方法
public static boolean isTimeInRange(LocalDateTime startTime, LocalDateTime endTime) {
LocalDateTime current = LocalDateTime.now();
return (current.isEqual(startTime) || current.isAfter(startTime)) && current.isBefore(endTime);
}
}
这段代码输出的结果为:
当前时间:Thu May 27 15:03:19 CST 2021
时间段:Thu May 27 14:03:19 CST 2021 ~ Thu May 27 16:03:19 CST 2021
是否在时间段内:true
当前时间:2021-05-27T15:03:19.002648500
时间段:2021-05-27T14:03:19.002648500 ~ 2021-05-27T16:03:19.002648500
是否在时间段内:true
至此,Java 判断一个时间是否在另一个时间段内的完整攻略就讲解完毕了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 判断一个时间是否在另一个时间段内 - Python技术站