半小时内获得可用性

时间:2015-10-01 08:02:39

标签: java jodatime

我的申请表中有以下列表。现在我将每隔半小时检测一次日期是否在调度程序中。 e.g。

2015年9月27日:08:00-13:00

最长时间范围从上午07:00到下午07:00

07:00 - 07:30 no -> 0
07:30 - 08:00 no -> 0
08:00 - 08:30 yes -> 1
08:30 - 09:00 yes -> 1
09:30 - 10:00 yes -> 1
...
13:00 - 13:30 no -> 0

那应该是结果:

0 0 0 0 1 1 1 ... 1 0 0 0 1 1 1 0 ...    

我有大约1000个条目(80个用户,平均12个条目= 960个条目)

如果我迭代时间范围,它将不会非常高效。 我现在的问题是,如果有一种高效的方法。 我使用JodaTime但我没有找到一种简单而高效的方法。

非常感谢您的帮助!

final List<List<SchedulerContainer>> weekScheduler = new ArrayList<>();

weekScheduler.add(0, new ArrayList<SchedulerContainer>()); 
weekScheduler.add(1, new ArrayList<SchedulerContainer>()); 
weekScheduler.add(2, new ArrayList<SchedulerContainer>()); 
weekScheduler.add(3, new ArrayList<SchedulerContainer>()); 
weekScheduler.add(4, new ArrayList<SchedulerContainer>()); 
weekScheduler.add(5, new ArrayList<SchedulerContainer>()); 
weekScheduler.add(6, new ArrayList<SchedulerContainer>()); 

final SchedulerContainer sc1 = new SchedulerContainer();
sc1.setStart(formatter.parseDateTime("27.09.2015 08:00"));
sc1.setEnd(formatter.parseDateTime("27.09.2015 13:00"));
sc1.setContainerType(SchedulerContainerTypeEnum.SERVICE);
sc1.setRepeatable(true);

weekScheduler.get(1).add(sc1);

final SchedulerContainer sc2 = new SchedulerContainer();
sc2.setStart(formatter.parseDateTime("29.09.2015 11:00"));
sc2.setEnd(formatter.parseDateTime("29.09.2015 17:00"));
sc2.setContainerType(SchedulerContainerTypeEnum.SERVICE);
sc2.setRepeatable(true);

weekScheduler.get(3).add(sc1);

[编辑]

我从数据库中得到这个:

 user1 -> weekScheduler 
 user2 -> weekScheduler 
 user3 -> weekScheduler 
 user4 -> weekScheduler 
...

对于概述表中的摘要行,我需要这个:

 Monday

3 3 0 1 (for every half an hour)

My table

0 个答案:

没有答案