【问题标题】:VB.NET Date Comparison Not Returning Correct Results?VB.NET 日期比较未返回正确结果?
【发布时间】:2011-07-09 10:13:39
【问题描述】:

我正在从我的数据库中提取一个日期值:

        Dim qfresho = From p In dbConfig.Configs _
                     Where p.Description = "FROD" _
                    Select p.dateValue
        Dim qfreshc = From p In dbConfig.Configs _
                      Where p.Description = "FRCD" _
                      Select p.dateValue

然后将这些日期值与当前日期进行比较:

        If qfresho.First.Value >= Date.Now And qfreshc.First.Value <= Date.Now Then
        lblFreshman.Text = "Freshmen are currently eligible to register for a room."
    Else
        Dim frdays As TimeSpan
        frdays = (qfresho.First.Value).Subtract(Now)
        lblFreshman.Text = "Registration will open for freshmen in " & frdays.Days & " days."
    End If

但由于某种原因,它总是返回 Else 条件 - 即使数据库中的值应该使查询为真。有任何想法吗?我猜出于某种原因它没有将结果作为日期?

【问题讨论】:

    标签: asp.net vb.net linq datetime date


    【解决方案1】:

    Date.Now 返回一个 DateTime,那么您的数据库有日期和时间还是只有日期?如果只需要日期,可以使用 Date.Today。

    【讨论】:

    • 这可能是问题的一部分,但我更新了代码以使用 Date.Today,但它仍然无法正常工作。当我通过调试器查看各种数据时,我可以看到它正在拉回像 #3/1/2011# 这样的值,类型为“日期?” - 我不知道为什么它不确定?
    • 那么我建议添加一些调试以查看哪个条件给您带来麻烦,因此 Debug.WriteLine(qfresho.First.Value >= Date.Now) 和 Debug.WriteLine(qfreshc.First. Value
    • 关于“日期?”类型:这意味着它是一个可以为空的日期。见msdn.microsoft.com/en-us/library/bb981315(v=vs.80).aspx
    【解决方案2】:

    日期是否包含可能导致比较失败的时间组件?

    【讨论】:

    • 没有时间组件,因此我现在按照上面约翰的建议使用 Date.Today。
    【解决方案3】:

    为什么不在比较前加两个调试???

        Debug.WriteLine(qfresho.First.Value.ToString("MM/dd/yyyy hh:mm:ss.ffff"))
        Debug.WriteLine(qfreshc.First.Value.ToString("MM/dd/yyyy hh:mm:ss.ffff"))
    

    这应该会有所帮助。

    【讨论】:

      猜你喜欢
      • 2015-11-02
      • 1970-01-01
      • 2012-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多