의 다른 기간에서 시간의 기간을 제거하는 재귀 함수가 필요합니다. 나는 작업중인 프로젝트에서 약속을 처리합니다. 사람들이 약속을 요청할 수있는 시간대를 걸러 낼 때 나는 걸림돌을 때렸다.나는 이것이 내 첫 번째 질문입니다 나는 가능한 한 명확하게하려고합니다 시간
Public Class TimePeriod
#Region "Private Variables"
Private _startTime As TimeSpan
Private _endTime As TimeSpan
#End Region
#Region "Public Properties"
Public Property StartTime As TimeSpan
Get
Return Me._startTime
End Get
Set(value As TimeSpan)
Me._startTime = value
End Set
End Property
Public Property EndTime As TimeSpan
Get
Return Me._endTime
End Get
Set(value As TimeSpan)
Me._endTime = value
End Set
End Property
#End Region
#Region "Constructors"
Public Sub New()
Me.New(New TimeSpan(0, 0, 0), New TimeSpan(0, 0, 0))
End Sub
Public Sub New(StartTime As TimeSpan, EndTime As TimeSpan)
Me._startTime = StartTime
Me._endTime = EndTime
End Sub
#End Region
End Class
Public Class TimePeriodFunctions
Public Shared Function RemoveTimePeriod(MasterTimePeriod As TimePeriod, TimePeriodToRemove As TimePeriod) As System.Collections.Generic.List(Of TimePeriod)
'SEE FIRST IF THERE IS ANY OVERLAP
If (TimePeriodToRemove.StartTime >= MasterTimePeriod.StartTime And TimePeriodToRemove.StartTime <= MasterTimePeriod.EndTime) Or _
(TimePeriodToRemove.EndTime >= MasterTimePeriod.StartTime And TimePeriodToRemove.EndTime <= MasterTimePeriod.EndTime) Then
Dim TimePeriods As New System.Collections.Generic.List(Of TimePeriod)
If TimePeriodToRemove.StartTime >= MasterTimePeriod.StartTime And TimePeriodToRemove.StartTime <= MasterTimePeriod.EndTime And _
MasterTimePeriod.StartTime <> TimePeriodToRemove.StartTime Then
'TIME TO RETURN IS FROM MASTERTIMEPERIOD.STARTTIME TO TIMEPERIODTOREMOVE.STARTTIME
TimePeriods.Add(New TimePeriod(MasterTimePeriod.StartTime, TimePeriodToRemove.StartTime))
End If
If TimePeriodToRemove.EndTime >= MasterTimePeriod.StartTime And TimePeriodToRemove.EndTime <= MasterTimePeriod.EndTime And _
TimePeriodToRemove.EndTime <> MasterTimePeriod.EndTime Then
'TIME TO RETURN IS FROM TIMEPERIODTOREMOVE.ENDTIME TO MASTERTIMEPERIOD.ENDTIME
TimePeriods.Add(New TimePeriod(TimePeriodToRemove.EndTime, MasterTimePeriod.EndTime))
End If
Return TimePeriods
Else
'IF THERE IS NO OVERLAP, THEN RETURN AN EMPTY COLLECTION
Return New System.Collections.Generic.List(Of TimePeriod)
End If
End Function
End Class
을 지금은 상영으로 = 9:00 ENDTIME = 5:00 약속을 할 가능 기간을 나타내는 TimePeriod이있는 경우, 그리고 : 나는 다음과 같이 일정 기간 동안 클래스를 정의 현재 예약 된 여러 가지 약속 (예 : 9 : 30-10 : 00, 10 : 00-11 : 00)의 일반적인 목록이 있습니다. 반복 가능한 함수를 작성하여 사용 가능한 기간의 일반적인 목록을 반환하는 방법은 무엇입니까? 사용 가능한 기간에서 청크가 제거되지 않은 경우 제거)?