分钟的日期和时间差异

时间:2013-07-20 18:25:47

标签: vb.net datetime datediff

有没有办法显示两个不同时间之间的差异。我目前有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行会导致应用程序崩溃。

3 个答案:

答案 0 :(得分:8)

您可以信赖TimeSpan

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

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

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

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

关于您的代码,它引用EndTimeStartTime,这些不是DateTime个变量,而是TextBoxes。您必须将它们(他们的文本)转换为DateTime,如上所述,即:

DateDiff(DateInterval.Minute, DateTime.Parse(EndTime.Text), DateTime.Parse(StartTime.Text))

答案 1 :(得分:0)

DateDiff函数可以执行此操作。

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

如果您的应用崩溃,您是否检查了您尝试传递给它的变量?您似乎试图将textbox传递给它,而不是textbox.text

答案 2 :(得分: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