java.time.LocalTime之间(第二天)
请建议是否有API支持来确定我的时间是否在2个java.time.LocalTime之间(第二天),java,java-8,java-time,localtime,Java,Java 8,Java Time,Localtime,请建议是否有API支持来确定我的时间是否在2个LocalTime实例之间,或者建议不同的方法 我有这个实体: class Place { LocalTime startDay; LocalTime endDay; } 存储工作日的开始和结束时间,即从'9:00'到'17:00',或从'22:00'到'5:00'的夜总会 我需要实现一个Place.isOpen()方法来确定该位置是否在给定时间打开 简单的isBefore/isAfter在这里不起作用,因为我们还需要确定结束时间是
LocalTime
实例之间,或者建议不同的方法
我有这个实体:
class Place {
LocalTime startDay;
LocalTime endDay;
}
存储工作日的开始和结束时间,即从'9:00'到'17:00',或从'22:00'到'5:00'的夜总会
我需要实现一个Place.isOpen()
方法来确定该位置是否在给定时间打开
简单的isBefore
/isAfter
在这里不起作用,因为我们还需要确定结束时间是否在第二天
当然,我们可以比较开始时间和结束时间并做出决定,但我想要的是没有额外逻辑的东西,只是一个简单的
between()
调用。如果LocalTime
不足以达到此目的,请建议其他。如果我理解正确,您需要根据关闭时间是在开放时间的同一天(9-17)还是在第二天(22-5)进行两个案例
它可以是:
public static boolean isOpen(LocalTime start, LocalTime end, LocalTime time) {
if (start.isAfter(end)) {
return !time.isBefore(start) || !time.isAfter(end);
} else {
return !time.isBefore(start) && !time.isAfter(end);
}
}
这对我来说更干净:
if (start.isBefore(end)) {
return start.isBefore(date.toLocalTime()) && end.isAfter(date.toLocalTime());
} else {
return date.toLocalTime().isAfter(start) || date.toLocalTime().isBefore(end);
}
我已经重构了@assylias answer,所以我使用int而不是本地时间,因为我从api int integer格式获得了打开和关闭时间
public static boolean isOpen(int start, int end, int time) {
if (start>end) {
return time>(start) || time<(end);
} else {
return time>(start) && time<(end);
}
}
public static boolean isOpen(int start, int end) {
SimpleDateFormat sdf = new SimpleDateFormat("HH");
Date resultdate = new Date();
String hour = sdf.format(resultdate);
int time = Integer.valueOf(hour);
if (start>end) {
return time>(start) || time<(end);
} else {
return time>(start) && time<(end);
}
}
publicstaticbooleanisopen(整数开始、整数结束、整数时间){
如果(开始>结束){
返回时间>(开始)|时间(开始)&时间结束){
返回时间>(开始)|时间(开始)&&timePost您已经尝试过的东西。您认为您将如何处理关闭时间“早于”(不考虑日期)开放时间的情况?“当然,我们可以比较两次,然后做出决定,但我认为这并不好。”你为什么这么认为?你在寻找什么解决方案?定义“好方法”。谢谢,这就是我的结论。然而,这似乎是一个流行的用例,我想知道API是否提供了任何支持。或者可能是一些存储额外一天的结构,一次只进行一次比较。但是如果解决了,这将不起作用,因为您需要在输入ti上确定“第二天”的事情我也是。生活就是痛苦:)我会把你的答案标记为解决办法。我认为没有更简单的办法了。