我试图检查日期是否在其他两个日期之间。另外两个日期来自两个DatePickers,格式为dd / mm / yyyy。我的下面的代码有效但如果我的搜索日期等于起始日期,我得到一个"不在"信息。如果我搜索日期为17/05/2013并且我将范围设置为下注:2013年5月17日至:17/05/2013我希望得到一个"之间"信息。有什么想法吗?
Dim str As String = "srt_inlbp_20130517"
Dim sString As String
sString = str.Substring(str.Length - 8)
Dim dTableDate As Date = Date.ParseExact(str.Substring(str.Length - 8), "yyyyMMdd", Nothing)
Label9.Text = dTableDate
If ((dTableDate >= dFromDate.Value) And (dTableDate <= dToDate.Value)) Then
MsgBox("between")
Else
MsgBox("not between")
End If
答案 0 :(得分:4)
我已经用这种可测试的格式重写了你的代码:
Dim str As String = "srt_inlbp_20130517"
Dim dTableDate As Date = _
Date.ParseExact(str.Substring(str.Length - 8), "yyyyMMdd", Nothing)
Dim dFromDate As New DateTime(2013, 5, 17)
Dim dToDate As New DateTime(2013, 6, 17)
If ((dTableDate >= dFromDate) And (dTableDate <= dToDate)) Then
Console.WriteLine("between")
Else
Console.WriteLine("not between")
End If
我得到“两者之间”的结果,所以我只能怀疑你的dFromDate.Value
和/或dToDate.Value
并不像你期望的那样。你能来看看吗?
答案 1 :(得分:3)
尝试编写比较器,就像读数字一样(例如,总是使用小于号)。
Dim questionableDate As Date = New Date(2013, 05, 17)
Dim fromDate As Date = New Date(2013, 05, 17)
Dim toDate As Date = New Date(2013, 05, 17)
If (fromDate <= questionableDate) AndAlso (questionableDate <= toDate) Then
MsgBox("between")
Else
MsgBox("not between")
End If
通过使用数字线方法,您可以轻松确定代码的作用。从日期到日期结束时,可疑日期夹在中间。
如果上面的代码没有使用您希望的结果,那么您需要设置一些断点并逐步执行代码以确切了解变量的值。