有没有办法显示两个不同时间之间的差异。我目前有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行会导致应用程序崩溃。
答案 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
。
关于您的代码,它引用EndTime
和StartTime
,这些不是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