1

4つの異なるDateTimeボックスがあります。2つのボックスには日付のみが表示され、他の2つのボックスには時刻のみが表示されます

現在の時刻が午前0時から午前6時の間の場合、日付ボックスの日付を前日にします。

私はそれをすべて持っています、私は2つを比較する部分が欠けているだけです。

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

声明が私が立ち往生しているところである場合、3番目までの私のコメント。DateTimeはdoubleデータ型ですか?currentTime.Hour <TimeOfDay.Hour.Equals(6)のようなものですか?

4

5 に答える 5

1

私がこれを理解しているなら、あなたのルールはあなたが現在の時刻を見たいということです。現在の時刻が午前12時(0000)から午前6時(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 に答える
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 に答える
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 に答える