我有四个不同的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) ?
答案 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)
答案 4 :(得分:0)
currentTime.Hour&lt; TimeOfDay.Hour.Equals(6)
最终成为答案