Vb.net 如何比较时间变量?

Vb.net 如何比较时间变量?,vb.net,Vb.net,我有3个DateTime类型或string类型的变量,格式为hh:mm:ss 例如: dT1="00:00:00" dT2="20:59:59" dT3="18:04:21" 如何执行以下比较 dT1<= dT3 <= dT2 ?? dT1您的示例显示的是字符串而不是日期时间。我将字符串放入名为TimeStrings的数组中。然后我创建了一个时间跨度列表。通过字符串循环,我将冒号上的每个字符串拆分,然后创建一个新的TimeSpan并将其添加到列表中。我使用列表的.Max方法

我有3个DateTime类型或string类型的变量,格式为
hh:mm:ss

例如:

dT1="00:00:00"
dT2="20:59:59"
dT3="18:04:21" 
如何执行以下比较

  dT1<= dT3 <= dT2 ??

dT1您的示例显示的是字符串而不是日期时间。我将字符串放入名为TimeStrings的数组中。然后我创建了一个时间跨度列表。通过字符串循环,我将冒号上的每个字符串拆分,然后创建一个新的TimeSpan并将其添加到列表中。我使用列表的.Max方法来获取列表中的最高值

Private Sub OpCode()
    'Constructor TimeSpan(Int32, Int32, Int32)
    Dim dT1 = "00:00:00"
    Dim dT2 = "20:59:59"
    Dim dT3 = "18:04:21"
    Dim TimeStrings = {dT1, dT2, dT3}
    Dim Spans As New List(Of TimeSpan)
    For Each s In TimeStrings
        Dim Splits = s.Split(":"c)
        Dim span As New TimeSpan(CInt(Splits(0)), CInt(Splits(1)), CInt(Splits(2)))
        Spans.Add(span)
    Next
    Dim HighestValue = Spans.Max
    MessageBox.Show(HighestValue.ToString)
End Sub

您可以尝试以下方法:

Dim dT1 As DateTime = New DateTime(2020, 1, 1, 0, 0, 0)        ' 00:00:00
Dim dT2 As DateTime = New DateTime(2020, 1, 1, 20, 59, 59)     ' 20:59:59
Dim dT3 As DateTime = New DateTime(2020, 1, 1, 18, 04, 21)     ' 18:04:21

If dT1 <= dT3 <= dT2 Then
    'your code
End If
Dim dT1 As DateTime=新日期时间(2020,1,1,0,0,0)'00:00:00
Dim dT2 As DateTime=新日期时间(2020,1,1,20,59,59)'20:59:59
Dim dT3 As DateTime=新日期时间(2020,1,1,18,04,21)'18:04:21
如果dT1,则可以使用或将字符串转换为时间跨度值。在这之后,比较很简单:

将字符串值添加到集合(数组或字符串列表)

max
将为
23:59:59

当然,您可以在此处按升序排列TimeSpan值:

Dim orderedTimeSpans =
    dTs.Select(Function(s) TimeSpan.ParseExact(s, "hh\:mm\:ss", CultureInfo.InvariantCulture)).
        OrderBy(Function(ts) ts).ToList()

orderedTimeSpans.ForEach(Sub(ts) Console.WriteLine(ts))
其中打印:

00:00:00
18:04:21
20:59:59
23:10:21
23:59:59
使用
TryParseExact()
,如果您不确定格式是否正确,则可能不正确(可能是因为值的来源不可靠-例如,用户输入):

这也会返回
23:59:59

如果无法解析其中一个值,则不会使用
Max()
方法对其进行计算

例如,如果这是输入字符串
“23.59:59”
InvariantCulture
,并且指定的格式不允许返回有效的时间跨度,因此最大值将改为
23:10:21

同样,使用
TryParseExact()
,但采用扩展形式(使用循环):


我想如果你把它们转换成TimeSpan对象,你应该可以很容易地比较它们。你为什么问我们如何比较变量?本网站不是教你基本知识或为你编写代码。如果要比较变量,请比较它们。如果你不知道如何比较三个变量——如果你真的尝试过,这很容易——那么在线搜索它,因为毫无疑问会有一些例子。Quindi se ho
sT1=“00:00:00”sT2=“20:59:59”sT3=“18:04:21”
posso definire
dT1 as Datetime=sT1,dT2 as Datetime=sT2,dT3 as DateDateTime=sT3
e quindi poter fare

00:00:00
18:04:21
20:59:59
23:10:21
23:59:59
Dim parsed As TimeSpan
Dim max As TimeSpan =
    dTs.Select(Function(s) TimeSpan.TryParseExact(s, "hh\:mm\:ss",
               CultureInfo.InvariantCulture, parsed)).Max(Function(t) parsed)
Dim maxValue As TimeSpan = New TimeSpan()
Dim parsed As TimeSpan = New TimeSpan()
For Each value As String In dTs
    If TimeSpan.TryParseExact(value, "hh\:mm\:ss", CultureInfo.InvariantCulture, parsed) Then
        maxValue = If(TimeSpan.Compare(maxValue, parsed) > 0, maxValue, parsed)
    End If
Next