如何在java.I中检查给定的时间集是否可用,我将时间以“yyyy:mm:ss”格式存储在来自json响应的数组列表中。例如,在接下来的时间预订了票,而新客户在这段时间内正在请求票证,我如何从已经预订的时间中检查门票的可用性。
样品票已预订时间:
time set 1
start time "2013-11-11 08:10:00";
end time "2013-11-11 10:03:00";
time set 2
start time "2013-11-11 14:11:00";
end time "2013-11-11 16:10:00";
time set 3
start time "2013-11-11 11:00:00";
end time "2013-11-11 12:10:00";
time set 4
start time "2013-11-11 19:00:00";
end time "2013-11-11 23:30:00";场景1:
以下时间的新客户请求票证(available time):
start time "2013-11-11 10:04:00";
end time "2013-11-11 10:59:00";这个时间集是可用的,因为没有时间在特定时间预订。
场景2:
以下时间的新客户请求票证(不可用时间):
start time "2013-11-11 09:55:00";
end time "2013-11-11 10:59:00";此时间集不可用,因为 09:55:00 已在 time set 1中预订
场景:
以下时间的新客户请求票证(不可用时间):
start time "2013-11-11 10:20:00"
end time "2013-11-11 11:20:00"此时间集不可用,因为 11:20:00 已在 time set 3中预订
我使用以下方法将json结果存储在数组列表中:
DateFormat formate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
ArrayList<Date> dealStart = new ArrayList<Date>();
ArrayList<Date> dealEnd = new ArrayList<Date>();
dealStart.add(formate.parse(jsonObject.getString("booked_start_time"));
dealEnd.add(formate.parse(jsonObject.getString("booked_end_time"));请帮助我解决java /android中的逻辑问题。
发布于 2013-11-12 19:16:24
在没有新的数据结构的情况下,可能有更直接的方法来实现它,但是使用区间树来实现您的目标。
在计算机科学中,区间树是一种有序的树数据结构来保持间隔。具体来说,它允许一个人有效地找到与任何给定的间隔或点重叠的所有间隔。
这里是一个区间树的Java实现。
发布于 2013-11-12 19:30:57
我知道您有一个逻辑问题,但我强烈建议您考虑使用尤达-时间来管理Java/Android时间和任何与时间相关的内容。时间是很难做好的,有很多事情你没有想到(时区、日光节约等等),更不用说Joda时间是非常直接的,比Java标准更容易使用和理解。
由于您的应用程序似乎非常依赖时间,这是一个好主意。
现在回到你的逻辑。有了Joda,就需要为您预定的时间创建一个间隔实例,为您请求的票务时间创建一个实例,并执行一些时间计算。您还可以使用更抽象的句号。
这应该是相对容易和非常直接的前进。
示例:
DateTime bookedstart = new DateTime(2013, 10, 25, 13, 0, 0, 0); //13:00
DateTime bookedend = new DateTime(2013, 10, 25, 14, 0, 0, 0); //14:00
Interval interval = new Interval(bookedstart, bookedend);
DateTime requested = new DateTime(2013, 10, 25, 15, 45, 0, 0); //15:45
System.out.println(interval.contains(requested)); // false, so it's available.https://stackoverflow.com/questions/19937299
复制相似问题