2012-11-09 2 views
2

친구 목록에서 예약 된 시간 슬롯을 사용하지, 세부 사항은 다음과 같습니다 영업 시간이 9시에서 7에 시작 : 00 기본 간격은 30 분입니다. 슬롯은 (9:00, 9:30, 10:00 .... 7:00)처럼 시작됩니다.방법, 업무 시간 타임 슬롯

사용 가능한 슬롯을 표시하려면 다음 Logic을 사용하고 있습니다. 추천 목록에 30 분 기간에 모든 슬롯 저장

  1. (LIST) 9시 9:30 10:00 10:30 ... 7시]
  2. 예약 된 약속 (시작 및 종료 시간 포함)을 반복하고 시작 시간이 LIST A 요소 중 하나와 일치하면 해당 목록에서 해당 요소를 제거합니다. 루프가 계속됩니다.

여기서 문제는 약속이 예약되어있는 경우를 고려하십시오. 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 시부 터 9시 30 분, 10시 30 분 11 분 : 00-10 : 00, 10 :. 9시 반부터 30-11이 목록에서 제거됩니다,

이 문제에 대한 몇 가지 다른 접근 방법을이 문제를 해결, 또는 나에게 제안 도와주세요 00 그것은 9 보여줍니다 . 나쁘게 필요했다.

답변

2

혼란스러운 것은 두 번째 슬롯의 시작 시간을 첫 번째 슬롯의 끝 시간으로 취하는 것입니다. 그러기보다는 시작 시간과 기간을 저장하는 것입니다.

그리고 단순히 종료 시간을 계산하기 위해, 당신은

StartTime.AddMinutes(30); 

그리고 마지막에 하나 개 더 코멘트를 추가 할; 당신은 매우 단단한 구조를 만들려고 노력하고 있습니다. 그리고 IMHO 응용 프로그램을 확장하려고하면 문제가 발생합니다.

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; 
같이해야한다
관련 문제