1

我有四个不同的 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 是双数据类型吗?类似 if currentTime.Hour < TimeOfDay.Hour.Equals(6) ?

4

5 回答 5

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包含时间元素和日期元素。

于 2012-12-13T16:19:31.323 回答
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).

于 2012-12-13T16:21:55.370 回答
1

我在类似的情况下执行此操作,我想检查当前时间是否在凌晨 4 点之前。

If (DateTime.Now.Hour < 4) Then
   'do something
End If
于 2012-12-13T16:22:34.983 回答
0

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

于 2012-12-13T16:15:58.737 回答
0

currentTime.Hour < TimeOfDay.Hour.Equals(6)

最终成为答案

于 2012-12-13T16:20:10.173 回答