2012-11-09 84 views
2

好友列表禁用的預定時隙,如何從營業時間時隙

我工作的預約項目,詳情如下: 營業時間開始從9:007: 00默認持續時間爲30分鐘。所以,老虎機開始像(9點,9點30分,10點...... 7點)。

在這裏,爲了顯示可用插槽,我使用了下面的邏輯。

  1. 存儲所有插槽30分鐘持續時間列表(列表中)像[9:00,9:30,10:00,10:30,07:00 ...]
  2. 通過預約約會(包含開始和結束時間),並且如果開始時間與LIST A中的任何一個匹配,則從該列表中刪除該元素。並繼續循環。

這裏,問題是,考慮如果預約預約9:30-10:00。 基於我的邏輯,9:30與LIST A元素相匹配,它將從該列表中刪除9:30。

因此,可用插槽將顯示爲[9:00,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從列表中刪除,

請幫助解決這個問題,還是建議我該問題的一些替代方法。非常需要。

回答

2

你正在混淆的是,你將第二個插槽的開始時間作爲第一個插槽的結束時間。所以寧可這麼做,你可以做的是存儲開始時間和持續時間。

而簡單地計算結束時間,你做

StartTime.AddMinutes(30); 

,並添加結束時多一個評論;你正試圖建立一個非常嚴格的結構。如果你想擴展應用程序,恕我直言,將面臨問題。

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;