Sprache: VB
Mit diesem Snippet läst sich überprüfen ob ein Datum zwischen zwei anderen liegt.
Das Snippet wird über
[b]Day_between_days (Start Datum,Enddatum, Vergleichs Datum, True/False)[/b]
angesprochen und gibt ein boolesches True aus wenn das EndDatum Zwischen Start und EndDatum liegt.
Die letzte Variable gibt an ob Die Anfangs Und Enddaten miteinbezogen werden sollen.
Ein Beispiel:
[code] If Day_between_days("1.5.2012", "6.5.2012", "3.5.2012", False) = True Then
MsgBox("ja")
Else
MsgBox("nein")
End If[/code]
Ausgabe hier wird eine Msgbox mit dem Inhalt: "ja" sein
Function Day_between_days(ByVal StartDate As Date, ByVal EndDate As Date, ByVal CompareDate As Date, ByVal StartEnd_involved As Boolean) As Boolean
Dim Temp1 As Integer
Dim Temp2 As Integer
temp1 = Date.Compare(StartDate, CompareDate)
Temp2 = Date.Compare(EndDate, CompareDate)
If Date.Compare(StartDate, EndDate) < 0 Then
If Temp2 = 0 And StartEnd_involved = True Or Temp1 = 0 And StartEnd_involved = True Then
Return True
Exit Function
End If
If Temp1 < 0 And Temp2 > 0 Then
Return True
Else
Return False
End If
Else
MsgBox("The start date is after the end date", MsgBoxStyle.Critical, "Error !")
Return False
End If
End Function
Function Day_between_days(ByVal StartDate As Date, ByVal EndDate As Date, ByVal CompareDate As Date, ByVal StartEnd_involved As Boolean) As Boolean
Dim Temp1 As Integer
Dim Temp2 As Integer
temp1 = Date.Compare(StartDate, CompareDate)
Temp2 = Date.Compare(EndDate, CompareDate)
If Date.Compare(StartDate, EndDate) < 0 Then
If Temp2 = 0 And StartEnd_involved = True Or Temp1 = 0 And StartEnd_involved = True Then
Return True
Exit Function
End If
If Temp1 < 0 And Temp2 > 0 Then
Return True
Else
Return False
End If
Else
MsgBox("The start date is after the end date", MsgBoxStyle.Critical, "Error !")
Return False
End If
End Function
Alte URL:
/snippet/pruefen-ob-ein-datum-zwischen-zwei-anderen-liegt/1706
Hallo, an sich find ich die Idee gut, aber 1. sollte man Logik und Design trennen, d.h. keine MessageBox anzeigen, sondern eine Exception werfen und 2. könnte man die Methode etwas effektivieren:
_
[code]
Public Function IsBetween(dt As DateTime, startDate As DateTime, endDate As DateTime, icl As Boolean) As Boolean
If endDate < startDate Then Throw New ArgumentException("startDate > endDate“)
End If
If icl Then
Return dt >= startDate AndAlso dt <= endDate Else Return dt > startDate AndAlso dt < endDate End If End Function [/code] Außerdem wäre es nicht schlecht, wenn es sich um eine Erweiterungsmethode handelt 😉
Durch eine sinnvolle Umbenennung der Methode, kann sogar noch ein wenig vereinfacht werden.
[code]
Public Function IsInRange(_value As Date, _minDate As Date, _maxDate As Date) As Boolean
If _maxDate < _minDate Then Throw New ArgumentException("startDate > endDate“)
End If
Return _value >= _minDate AndAlso _value <= _maxDate End Function [/code]