Java 如何比较Android中的两个时间范围?
我有两个字符串变量“time1”和“time2”。基本上,每个字符串变量本身就是一个时间范围。 “时间1”介于“时间2”之间或“时间2”介于“时间1”之间。打印“不可用” 示例案例1: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
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);
}
}
输出
不可用
无法使用的
无法使用的
可获得的