在vb.net中比较时间

时间:2012-12-13 16:11:29

标签: vb.net time

我有四个不同的DateTime框。两个框只显示日期,另外两个只显示时间

如果当前时间是在午夜到早上六点之间,我希望日期框中的日期是前一天。

我拥有一切,我只是错过了比较两者的部分。

Dim currentTime As DateTime = Now
        'default date
        If deMaxDate.Value = Nothing Then
            deMaxDate.Value = Now
        End If
        If deMinDate.Value = Nothing Then
            If currentTime.Hour < TimeOfDay.Hour Then
            'THIS IF STATMENT IS WRONG - HOW CAN I CHECK IF ITS BETWEEN 12AM AND 6 HERE
                deMinDate.Value = (Now - TimeSpan.FromDays(1))
            Else
                deMinDate.Value = Now
            End If
        End If
            'default time
            If teMaxTime.Value = Nothing Then
                teMaxTime.Value = Now
            End If
            If teMinTime.Value = Nothing Then
                teMinTime.Value = (Now - TimeSpan.FromHours(6))
            End If

我的评论是第三个,如果我是坚持的地方。 DateTime是一个双数据类型?就像是 如果currentTime.Hour&lt; TimeOfDay.Hour.Equals(6) ?

5 个答案:

答案 0 :(得分:1)

只需使用

If currentTime.Hour <= 6 Then
     deMinDate.Value = Now.AddDays(-1)
Else
     deMinDate.Value = Now
End If

或者确实......

If currentTime.Hour <= 6 Then
     deMinDate.Value = Now.Date.AddDays(-1)
Else
     deMinDate.Value = Now.Date
End If

如果您不想要时间位,因为.Now包含时间元素和日期元素。

答案 1 :(得分:1)

你的规则,如果我理解这一点,就是你要查看当前时间。如果当前时间在12AM(0000)和6AM(0600)之间,那么您希望将昨天用作活动日期。

Dim current as DateTime = now()
Dim activeDate as DateTime = current
if current.Hour < 6 then
    activeDate = current.AddDays(-1)
end if

虽然,除了这个商业规则之外,如果你对日期的小时部分不感兴趣,你可以随时做date.AddHours(-6)

答案 2 :(得分:1)

我在类似的情况下这样做,我想检查当前时间是凌晨4点。

If (DateTime.Now.Hour < 4) Then
   'do something
End If

答案 3 :(得分:0)

看看http://msdn.microsoft.com/en-us/library/5ata5aya.aspx。它可能适用于您的案例

答案 4 :(得分:0)

currentTime.Hour&lt; TimeOfDay.Hour.Equals(6)

最终成为答案