2

朋友们,

我正在工作的预约项目,详情如下: 营业时间从9:007:00,默认时长为30 分钟。所以,老虎机开始像 (9:00, 9:30, 10:00.... 7:00)。

在这里,为了显示可用的插槽,我使用了以下逻辑。

  1. 将所有持续时间为30 分钟的插槽存储在列表 ( LIST A ) 中,例如 [9:00, 9:30, 10:00, 10:30, ... 7:00]
  2. 遍历已预订的约会(包含start 和 end time),如果 start time 与任何LIST A元素 I' 匹配,则从该 List 中删除该元素。循环继续。

在这里,问题是,考虑如果预约是9:30-10:00。根据我的逻辑,9 :30与 LIST A 元素匹配,它将从该列表中删除 9:30。

因此,可用插槽将显示为 [9:00, X ,10:00, 10:30, .... 7:00]。实际上应该是 [9:00, 9:30, 10:30, 11:00... 7:00]

而不是显示可用的插槽9:00-9:30, 10:30-11:00它显示9:00-10:00, 10:30-11,因为 9:30 已从列表中删除。

请帮助解决这个问题,或者建议我解决这个问题的一些替代方法。非常需要。

4

2 回答 2

2

您混淆的是,您将第二个插槽的开始时间作为第一个插槽的结束时间。因此,与其这样做,您可以做的是存储开始时间和持续时间。

为了简单地计算结束时间,您可以

StartTime.AddMinutes(30);

并在最后添加一条评论;你正在尝试建立一个非常刚性的结构。如果您尝试扩展应用程序,恕我直言,将会面临问题。

于 2012-11-09T16:43:48.893 回答
2

我建议,不要使用单维数组,而是使用多维数组,例如

[[9:00][9:30],[9:30][10:00],[10:00][10:30], .... nth Item] 

在这里,逻辑应该是这样的

var start=[start time]
var end=[end time]
var duration=[duration]

for (i=start;i<end;i+=duration)
{
   if(start==A[i][0])
   remove(A[i][0]);
}
A.sort();
return A; 
于 2012-11-10T07:51:24.240 回答