如何在vb.net中的select case语句中使用时间值

时间:2011-07-04 17:45:16

标签: .net vb.net

我想用半小时的时段检查当前时间(从00:00,00:30,01:00,...... 23:30共48次开始)。是否可以使用select case语句。如果没有其他任何建议吗?

我将当前时间存储在一个对象中。

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

现在我需要对这个变量进行条件检查。在变量所属的时隙下,我需要在相应的时隙下写一个值。

2 个答案:

答案 0 :(得分:2)

可以将VB.NET Date数据类型与Select ... Case语句一起使用,但这不是解决问题的好方法,因为您将被迫比较两者日期部分和时间部分在一起。 (您可以将日期更改为“虚拟”值以与已知日期进行比较,但这仍然是一种相当低效且过长的方式。)

我建议改为使用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时)。

答案 1 :(得分: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