2011-07-04 30 views
0

30分のタイムスロットで現在の時刻をチェックしたいと思います(合計は00:00,00:30,01:00、..から始まります) ..23:30)。 select case文を使用することは可能ですか?他に何か提案がありますか?vb.netのselect case文で時間値を使用する方法

私は現在の時刻をオブジェクトに格納しています。

Dim datime As DateTime = DateTime.Now.ToString("t") 

この変数の条件チェックを行う必要があります。変数が属するタイムスロットの下では、対応するタイムスロットの下に値を書き込む必要があります。

+1

投稿したコード行は、Option Strict Offを設定していない限り、コンパイルされません。その場合、オンにしてください。 – dbasnett

+0

何が48のスロットの中に入るでしょうか? – dbasnett

答えて

0
Dim datime As DateTime = DateTime.Now 
Dim timeSlot As Integer = datetime.Hour * 2 + (If(datetime.Minute > 30, 1, 0)) 
Select Case timeSlot 'ranges from 0 to 47 
    Case 0 
     ... 
End Select 
2

あなたの日付部分との両方を比較することを余儀なくされるであろうが、これはあなたの問題を解決するために非常に良い方法ではないでしょう、Select ... Case文でVB.NET Dateデータ型を使用することが可能です一緒に時間の部分。 (あなたは既知の日付と比較するために日付を「ダミー」の値に変更することができますが、これはやはり非効率的で、これを行うにはあまりにも時間がかかります)

代わりにTimeOfDayを使用して期間を取得することをお勧めします現在の日付の過去の深夜:

Dim timeOfDay As TimeSpan = DateTime.Now.TimeOfDay 

今、あなたはあなたの48個の値のいずれかにそれを正規化することができます。

Dim slot As Integer = timeOfDay.Hours * 2 + timeOfDay.Minutes \ 30 

これは、0からのレンジングスロット値をもたらすべきである(のTimeSpanは以下であるとき00:30:00)〜47(TimeSpanが23:29:00より大きい)。

関連する問題