2012-12-13 98 views
1

我有四個不同的DateTime框。兩盒只顯示日期和其他兩個只顯示時間在vb.net比較時間

如果當前時間是午夜和早上六點我想在日期中的日期是前一天。

我擁有這一切,我只是缺少比較兩個部分。

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 < TimeOfDay.Hour.Equals(6) ?

回答

0

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

結束了答案

+0

你已經過度複雜了'.hour'是一個整數 –

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

你的規則,如果我理解這一點,就是你想看看在當前的時間。如果當前時間在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)

1

我這樣做了類似的情況,我想檢查當前時間先於凌晨4點。

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