Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 使用case语句查找时间范围_Vb.net - Fatal编程技术网

Vb.net 使用case语句查找时间范围

Vb.net 使用case语句查找时间范围,vb.net,Vb.net,大家晚上好 有人能帮我吗 带有“时间值”,例如08:00:00 我想在using case语句中找到该值的范围 我不擅长使用时间格式 有人能帮忙吗 这只是一个例子:(代码不起作用…只是一个例子) 在这种情况下,我不会使用Select…case语句,它应该只用于简单的条件。您可以改用If-Else 但由于您实际上是在检查给定的时间是否在一个范围内,所以您也可以使用以下使用LINQ的代码 首先,您需要定义一个包含所有范围的集合。您可以使用列表(您的类)甚至是一个异常类型的数组: Dim ranges

大家晚上好

有人能帮我吗

带有“时间值”,例如08:00:00

我想在using case语句中找到该值的范围

我不擅长使用时间格式

有人能帮忙吗

这只是一个例子:(代码不起作用…只是一个例子)


在这种情况下,我不会使用
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