我想用半小时的时段检查当前时间(从00:00,00:30,01:00,...... 23:30共48次开始)。是否可以使用select case语句。如果没有其他任何建议吗?
我将当前时间存储在一个对象中。
Dim datime As DateTime = DateTime.Now.ToString("t")
现在我需要对这个变量进行条件检查。在变量所属的时隙下,我需要在相应的时隙下写一个值。
答案 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