计算时差并仅返回小时和分钟(在VB.net中)

时间:2014-04-05 09:56:16

标签: vb.net visual-studio-2010 visual-studio

我正在开发一个计算时差的系统。如何比较两个时间(与日期)并得到小时和时间几分钟的差异?

示例1:

datetime1 = 1-Apr-2014 01:05:04 AM
datetime2 = 1-Apr-2014 02:05:04 AM

结果将是:

datetime2 - datetime1 = 01 Hours 00 Minutes

示例2:

datetime1 = 1-Apr-2014 01:05:04 AM
datetime2 = 2-Apr-2014 02:15:04 AM

结果将是:

datetime2 - datetime1 = 25 Hours 10 Minutes

负值(对于datetime1> datetime2)也有助于指示datetime1大于datetime2

示例:

datetime1 = 2-Apr-2014 01:05:04 AM
datetime2 = 1-Apr-2014 01:05:04 AM

结果将是:

datetime2 - datetime1 = -24 Hours 00 Minutes

谢谢!

3 个答案:

答案 0 :(得分:6)

我的建议是使用像

这样的东西
Dim minutesDiff = DateDiff(DateInterval.Minute,datetime1,datetime2)
Console.WriteLine("{0} hours {1} minutes", Math.Abs(minutesDiff) / 60, Math.Abs(minutesDiff) Mod 60)

将此延长至秒:

Dim secondsDiff = DateDiff(DateInterval.Second,datetime1,datetime2)
Console.WriteLine("{0} hours {1} minutes {2} seconds", Math.Abs(secondsDiff)/3600, (Math.Abs(secondsDiff) Mod 3600) / 60, Math.Abs(secondsDiff) Mod 60)

答案 1 :(得分:4)

另一种方法是,您可以使用TotalHours对象的MinutesTimeSpan属性来减去两个DateTime s:

Dim d1 As DateTime = DateTime.Now
Dim d2 As DateTime = DateTime.Now.AddHours(25).AddMinutes(10)

Dim difference As TimeSpan = d2 - d1
'round down total hours to integer'
Dim hours = Math.Floor(difference.TotalHours)
Dim minutes = difference.Minutes
'Following line prints : 25 Hours 10 Minutes'
Console.WriteLine("{0} Hours {1} Minutes", hours, minutes)

答案 2 :(得分:2)

我的问题的解决方案是:

Dim d1 As DateTime = DateTime.Parse("1-Apr-2014 10:10:00 AM")
Dim d2 As DateTime = DateTime.Parse("2-Apr-2014 10:10:00 AM")
Dim difference As TimeSpan = d2 - d1
'round down total hours to integer'
Dim hours = Math.Floor(difference.TotalHours)
Dim minutes = Math.Abs(difference.Minutes)
Dim seconds = difference.Seconds
Dim timeleft As String = Format(hours, "00") + " h " + Format(minutes, "00") + " m " + Format(seconds, "00") + " s "
If Int(seconds) < 0 Then
     timeleft = "00 h 00 m 00 s (Time Out)"
End If
Return timeleft 
' timeleft 24 hours 00 minutes 00 seconds