5

有什么方法可以显示两个不同时间之间的差异。我目前有 2 个按钮。

Sub AddButtonClick(sender As Object, e As EventArgs)

    StartTime.Text = DateTime.Now.ToString()

End Sub

这会生成第一个时间戳

Sub EndBreakClick(sender As Object, e As EventArgs)

    EndTime.Text = DateTime.Now.ToString()

    DateDiff(DateInterval.Minute, Endtime, StartTime)
End Sub

这会生成第二个时间戳,但 datediff 行会导致应用程序在我按下按钮后立即崩溃。

4

3 回答 3

10

您可以依靠TimeSpan

Dim elapsedTime As TimeSpan = DateTime.Parse(EndTime.Text).Subtract(DateTime.Parse(StartTime.Text))

它表现为一个正常的时间变量,您可以从中提取所需的所有信息。例子:

Dim elapsedMinutesText As String = elapsedTime.Minutes.ToString()

请记住,上面的代码将字符串变量作为输入(文本框中的文本),因为它执行相应的转换:Convert.ToDateTime.

关于您的代码,它指的是EndTimeandStartTime并且这些不是DateTime变量,而是TextBoxes. 您必须将它们(它们的文本)转换DateTime为我在上面所做的,即:

DateDiff(DateInterval.Minute, DateTime.Parse(EndTime.Text), DateTime.Parse(StartTime.Text))
于 2013-07-20T18:30:03.847 回答
0

DateDiff函数将执行此操作。

label1.text = DateDiff("n", DateTime.Parse(EndTime.Text), DateTime.Parse(StartTime.Text)).ToString

如果您的应用程序崩溃,您是否检查了您尝试传递给它的变量?看起来你试图传递textbox给它而不是textbox.text.

于 2013-07-20T18:30:51.340 回答
0
Sub EndBreakClick(sender As Object, e As EventArgs)

    EndTime.Text = DateTime.Now.ToString()

    Dim myStartTime As DateTime? = If(DateTime.TryParse(StartTime.Text, myStartTime), myStartTime, Nothing)
    Dim myEndTime As DateTime? = If(DateTime.TryParse(EndTime.Text, myEndTime), myEndTime, Nothing)
    If myStartTime.HasValue AndAlso myEndTime.HasValue Then
        Dim someVariable As Long = DateDiff(DateInterval.Minute, myStartTime.Value, myEndTime.Value)
        ' DO SOMETHING WITH THAT VARIABLE HERE
    Else
        ' One or both of the textbox values wasn't a valid DateTime.  Display an error message or something
    End If
End Sub
于 2013-07-20T19:00:42.967 回答