Vb.net 使用case语句查找时间范围
大家晚上好 有人能帮我吗 带有“时间值”,例如08:00:00 我想在using case语句中找到该值的范围 我不擅长使用时间格式 有人能帮忙吗 这只是一个例子:(代码不起作用…只是一个例子)Vb.net 使用case语句查找时间范围,vb.net,Vb.net,大家晚上好 有人能帮我吗 带有“时间值”,例如08:00:00 我想在using case语句中找到该值的范围 我不擅长使用时间格式 有人能帮忙吗 这只是一个例子:(代码不起作用…只是一个例子) 在这种情况下,我不会使用Select…case语句,它应该只用于简单的条件。您可以改用If-Else 但由于您实际上是在检查给定的时间是否在一个范围内,所以您也可以使用以下使用LINQ的代码 首先,您需要定义一个包含所有范围的集合。您可以使用列表(您的类)甚至是一个异常类型的数组: Dim ranges
在这种情况下,我不会使用
Select…case
语句,它应该只用于简单的条件。您可以改用If-Else
但由于您实际上是在检查给定的时间是否在一个范围内,所以您也可以使用以下使用LINQ的代码
首先,您需要定义一个包含所有范围的集合。您可以使用列表(您的类)
甚至是一个异常类型的数组:
Dim ranges = {
New With {.Start = TimeSpan.FromHours(8), .End = TimeSpan.FromHours(9)},
New With {.Start = New TimeSpan(9, 0, 1), .End = New TimeSpan(9, 14, 59)},
New With {.Start = New TimeSpan(9, 15, 0), .End = New TimeSpan(9, 29, 59)}
}
如果要比较TimeSpan
s,可以通过Date.Now.TimeOfDay
获得当前时间
Dim now As TimeSpan = Date.Now.TimeOfDay
Dim matchingRange = ranges.
FirstOrDefault(Function(r) now >= r.Start AndAlso now <= r.End)
如果你不听从蒂姆的建议,你可以用这个
Dim timeToCheck As DateTime = #7:10:00 PM#
Select Case timeToCheck.TimeOfDay
Case New TimeSpan(8, 0, 0) To New TimeSpan(9, 0, 0)
Stop
Case New TimeSpan(9, 0, 1) To New TimeSpan(9, 14, 59)
Stop
Case New TimeSpan(9, 15, 0) To New TimeSpan(9, 29, 59)
Stop
Case New TimeSpan(19, 0, 0) To New TimeSpan(19, 14, 59)
Stop
Case Else
Stop
End Select
您不想使用字符串。请小心这些范围,因为9:00:00.5和9:14:59.5这样的时间会给您带来问题
If matchingRange IsNot Nothing Then
lblRange.Text = String.Format("Between {0} and {1}",
matchingRange.Start,
matchingRange.End)
End If
Dim timeToCheck As DateTime = #7:10:00 PM#
Select Case timeToCheck.TimeOfDay
Case New TimeSpan(8, 0, 0) To New TimeSpan(9, 0, 0)
Stop
Case New TimeSpan(9, 0, 1) To New TimeSpan(9, 14, 59)
Stop
Case New TimeSpan(9, 15, 0) To New TimeSpan(9, 29, 59)
Stop
Case New TimeSpan(19, 0, 0) To New TimeSpan(19, 14, 59)
Stop
Case Else
Stop
End Select