Java 如何比较Android中的两个时间范围?

Java 如何比较Android中的两个时间范围?,java,android,datetime,time,Java,Android,Datetime,Time,我有两个字符串变量“time1”和“time2”。基本上,每个字符串变量本身就是一个时间范围。 “时间1”介于“时间2”之间或“时间2”介于“时间1”之间。打印“不可用” 示例案例1: String time1 = "14:00 - 16:00" String time2 = "15:00 - 16:00" String time1 = "14:00 - 17:00" String time2 = "15:00 - 16:00" String time1 = "15:00 - 16:00

我有两个字符串变量“time1”和“time2”。基本上,每个字符串变量本身就是一个时间范围。 “时间1”介于“时间2”之间或“时间2”介于“时间1”之间。打印“不可用”

示例案例1:

String time1 = "14:00 - 16:00"

String time2 = "15:00 - 16:00"
String time1 = "14:00 - 17:00"

String time2 = "15:00 - 16:00"
String time1 = "15:00 - 16:00"

String time2 = "14:00 - 17:00"
String time1 = "15:00 - 16:00"

String time2 = "14:00 - 16:00"
String time1 = "14:00 - 15:00"

String time2 = "15:00 - 16:00"
打印“不可用”

示例案例2:

String time1 = "14:00 - 16:00"

String time2 = "15:00 - 16:00"
String time1 = "14:00 - 17:00"

String time2 = "15:00 - 16:00"
String time1 = "15:00 - 16:00"

String time2 = "14:00 - 17:00"
String time1 = "15:00 - 16:00"

String time2 = "14:00 - 16:00"
String time1 = "14:00 - 15:00"

String time2 = "15:00 - 16:00"
打印“不可用”

示例案例3:

String time1 = "14:00 - 16:00"

String time2 = "15:00 - 16:00"
String time1 = "14:00 - 17:00"

String time2 = "15:00 - 16:00"
String time1 = "15:00 - 16:00"

String time2 = "14:00 - 17:00"
String time1 = "15:00 - 16:00"

String time2 = "14:00 - 16:00"
String time1 = "14:00 - 15:00"

String time2 = "15:00 - 16:00"
打印“不可用”

示例案例4:

String time1 = "14:00 - 16:00"

String time2 = "15:00 - 16:00"
String time1 = "14:00 - 17:00"

String time2 = "15:00 - 16:00"
String time1 = "15:00 - 16:00"

String time2 = "14:00 - 17:00"
String time1 = "15:00 - 16:00"

String time2 = "14:00 - 16:00"
String time1 = "14:00 - 15:00"

String time2 = "15:00 - 16:00"
打印“不可用”

示例案例5:

String time1 = "14:00 - 16:00"

String time2 = "15:00 - 16:00"
String time1 = "14:00 - 17:00"

String time2 = "15:00 - 16:00"
String time1 = "15:00 - 16:00"

String time2 = "14:00 - 17:00"
String time1 = "15:00 - 16:00"

String time2 = "14:00 - 16:00"
String time1 = "14:00 - 15:00"

String time2 = "15:00 - 16:00"
打印“可用”

可能有很多这样的情况。 实际上,“time2”指的是“在这段时间内,插槽已经被另一个用户预订了”,“time1”指的是“在这段时间内请求插槽的新用户”
注意:在预订系统上工作。

首先,解析字符串以查找每个字符串的

startTime
endTime

由于这些是简单的
hour:minute
,因此您可以简单地将它们计算为一天中的分钟,即
hour*60+分钟

解析开始时间和结束时间的一种简单方法是使用正则表达式

public final class TimeRange {
    private final int startMinOfDay;
    private final int endMinOfDay;

    public TimeRange(String text) {
        Pattern p = Pattern.compile("(\\d{1,2}):(\\d{2}) - (\\d{1,2}):(\\d{2})");
        Matcher m = p.matcher(text);
        if (! m.matches())
            throw new IllegalArgumentException("Invalid time range: " + text);
        this.startMinOfDay = minOfDay(m.group(1), m.group(2));
        this.endMinOfDay = minOfDay(m.group(3), m.group(4));
        if (this.endMinOfDay <= this.startMinOfDay)
            throw new IllegalArgumentException("Invalid time range: " + text);
    }
    private static int minOfDay(String hour, String minute) {
        int h = Integer.parseInt(hour);
        int m = Integer.parseInt(minute);
        if (m >= 60 || h >= 24)
            throw new IllegalArgumentException("Invalid time: " + hour + ":" + minute);
        return h * 60 + m;
    }
    public boolean overlaps(TimeRange that) {
        return (this.startMinOfDay < that.endMinOfDay && this.endMinOfDay > that.startMinOfDay);
    }
}
输出

不可用
无法使用的
无法使用的
可获得的