检查日期是否介于两个其他日期之间

时间:2014-06-05 23:53:33

标签: vb.net

我试图检查日期是否在其他两个日期之间。另外两个日期来自两个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

2 个答案:

答案 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

通过使用数字线方法,您可以轻松确定代码的作用。从日期到日期结束时,可疑日期夹在中间。

注意

如果上面的代码没有使用您希望的结果,那么您需要设置一些断点并逐步执行代码以确切了解变量的值。

相关问题