java.time.LocalTime之间(第二天)

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在这里不起作用,因为我们还需要确定结束时间是

请建议是否有API支持来确定我的时间是否在2个
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上确定“第二天”的事情我也是。生活就是痛苦:)我会把你的答案标记为解决办法。我认为没有更简单的办法了。