【发布时间】:2017-06-13 10:12:45
【问题描述】:
我想检查目标时间是否在两个给定时间之间,而不考虑使用 Java8 时间的日期。假设开始时间是 "21:30" ,结束时间是 "06:30" 并且目标时间是 "03:00" , 所以程序应该返回 true。
@Test
public void posteNuit()
{
DateTimeFormatter format = DateTimeFormatter.ofPattern("HH:mm");
String s = "21:30";
String e = "06:30";
String t = "03:00";
LocalTime startTime = LocalTime.parse(s, format);
LocalTime endTime = LocalTime.parse(e, format);
LocalTime targetTime = LocalTime.parse(t, format);
if ( targetTime.isBefore(endTime) && targetTime.isAfter(startTime) ) {
System.out.println("Yes! night shift.");
} else {
System.out.println("Not! night shift.");
}
}
【问题讨论】:
-
如果您不使用日期,那么 03:00 将始终在 21:30 之前。
-
顺便说一句,您不需要显式格式化程序。
LocalTime.parse("21:30")产生预期时间。这是因为您的时间字符串符合 ISO 8601,这是java.time类的默认格式。但是,该格式允许可选的秒数和秒数,因此如果您需要确保这些不存在于字符串中,最好保留您的格式化程序。 -
@OleV.V.谢谢你告诉。
标签: java time java-8 java-time