2014-10-01 370 views
0

我一直在寻找这个答案几天,现在找不到一个简单的解决方案。我有一个简单的表单,带有两个按钮“JOB START”&“JOB FINISH”。按钮文本等于按下日期/时间“现在”。所有我想要做的是有一个标签显示的总时间,一旦“工作干完”按格式为hh:mm:ss的VB.NET确定两个日期和时间之间的时间差

Me.btnStart.Text = 10/1/2014 05:30:00 
Me.btnStop.Text = 10/1/2014 06:45:00 

' Result should read: 
Me.Label1.Text = 01:15:00 

任何帮助将不胜感激。

回答

2

目前尚不清楚您是否有Dates或只有Strings。如果后者您首先必须使用Date.Parse(btnStart.Text)Date.TryParse(btnStart.Text, dateVariable)解析字符串。

但是,一旦你有两个日期,你可以计算出从dt1 - dt2它返回一个TimeSpan对象的持续时间,TimeSpan.ToString返回所需的字符串:

Dim stopDate As Date 
Dim stopIsDate As Boolean = Date.TryParse(btnStop.Text, stopDate) 
Dim startDate As Date 
Dim startIsDate As Boolean = Date.TryParse(btnStart.Text, startDate) 
If stopIsDate AndAlso startIsDate Then 
    Dim diff As TimeSpan = stopDate - startDate 
    Me.Label1.Text = diff.ToString("hh\:mm\:ss") 
End If 

另一种方法是创建一个DateTime其中的日期被忽略,那么您可以使用所有Date方法,如ToLongTimeString。它也更容易提供正确的格式:

Dim time As Date = Date.Today.Add(diff) ' Add takes a TimeSpan 
Me.Label1.Text = time.ToLongTimeString() 
' or ' 
Me.Label1.Text = time.ToString("T") 
' or ' 
Me.Label1.Text = time.ToString("HH:mm:ss") ' upper-case HH is 24h clock ' 

Standard Date and Time Format Strings

+0

感谢蒂姆Schmelter ......这个伟大的工程!我感谢你的时间。 – Noob2Java 2014-10-01 14:27:00