DateDiff 分かりづらい
vb.net に DateDiff って関数がある。
日付型と日付型を比較するんだけど、戻り値が数値で分かり難い・・・(俺だけ?)
「こっちの日付の方が後ろだと〜負の数か・・・」っとか考えながら作っても良く間違えてるし。
なので、簡単なのを作った。
・比較演算子と日付型2個を引数
・基本、日単位で計算(第四パラメータをセットすると日以外も計算可能)
・戻り値は Boolean
' DayDiff 用 Public Enum DAY_DIFF_TYPE As Integer EQ = 0 ' = NE = 1 ' <> GT = 2 ' > LT = 3 ' < GE = 4 ' >= LE = 5 ' <= End Enum Public Shared Function DayDiff(ByVal intType As DAY_DIFF_TYPE, ByVal dtValue1 As Date, ByVal dtValue2 As Date, _ Optional ByVal intInterval As DateInterval = DateInterval.Day) As Boolean Dim lngRtn As Long Dim blnReturn As Boolean lngRtn = DateDiff(intInterval, dtValue1, dtValue2) Select Case intType Case DAY_DIFF_TYPE.EQ ' = blnReturn = (0 = lngRtn) Case DAY_DIFF_TYPE.NE ' <> blnReturn = (0 <> lngRtn) Case DAY_DIFF_TYPE.GT ' > blnReturn = (0 > lngRtn) Case DAY_DIFF_TYPE.LT ' < blnReturn = (0 < lngRtn) Case DAY_DIFF_TYPE.GE ' >= blnReturn = (0 >= lngRtn) Case DAY_DIFF_TYPE.LE ' <= blnReturn = (0 <= lngRtn) End Select Return blnReturn End Function
実行方法と結果は
?DayDiff( DAY_DIFF_TYPE.EQ , #03/06/2007# , #03/06/2007# ) True ?DayDiff( DAY_DIFF_TYPE.EQ , #03/05/2007# , #03/06/2007# ) False ?DayDiff( DAY_DIFF_TYPE.EQ , #03/07/2007# , #03/06/2007# ) False ?DayDiff( DAY_DIFF_TYPE.NE , #03/06/2007# , #03/06/2007# ) False ?DayDiff( DAY_DIFF_TYPE.NE , #03/05/2007# , #03/06/2007# ) True ?DayDiff( DAY_DIFF_TYPE.NE , #03/07/2007# , #03/06/2007# ) True ?DayDiff( DAY_DIFF_TYPE.GT , #03/06/2007# , #03/06/2007# ) False ?DayDiff( DAY_DIFF_TYPE.GT , #03/05/2007# , #03/06/2007# ) False ?DayDiff( DAY_DIFF_TYPE.GT , #03/07/2007# , #03/06/2007# ) True ?DayDiff( DAY_DIFF_TYPE.LT , #03/06/2007# , #03/06/2007# ) False ?DayDiff( DAY_DIFF_TYPE.LT , #03/05/2007# , #03/06/2007# ) True ?DayDiff( DAY_DIFF_TYPE.LT , #03/07/2007# , #03/06/2007# ) False ?DayDiff( DAY_DIFF_TYPE.GE , #03/06/2007# , #03/06/2007# ) True ?DayDiff( DAY_DIFF_TYPE.GE , #03/05/2007# , #03/06/2007# ) False ?DayDiff( DAY_DIFF_TYPE.GE , #03/07/2007# , #03/06/2007# ) True ?DayDiff( DAY_DIFF_TYPE.LE , #03/06/2007# , #03/06/2007# ) True ?DayDiff( DAY_DIFF_TYPE.LE , #03/05/2007# , #03/06/2007# ) True ?DayDiff( DAY_DIFF_TYPE.LE , #03/07/2007# , #03/06/2007# ) False
結構、分かりやすくなったと思うんだけどな〜
自分は今後も使うだろう。
うんうん、自分用のメモね。