如何使用vb.net计算时间

时间:2011-07-09 18:04:05

标签: c# .net vb.net

我做了一个项目汽车租赁,但我很难计算时间,你迟到的时候接受罚款,请帮帮我

这是我的代码

Dim date1 As DateTime
Dim date2 As DateTime
'DateTimePicker1 = today's date 10/07/2011 11:10
'DateTimePicker2 = date back 10/07/2011 09:00

date1 = Convert.ToDateTime (Me.DateTimePicker2.Value)
date2 = Convert.ToDateTime (Me.DateTimePicker1.Value)

Dim diff As System.TimeSpan
diff = date2 - date1
Me.txtresult.text = diff.Hours & diff.Minutes

但结果不一致..

我想要结果= 2小时10分钟

有人帮帮我,,,拜托......

5 个答案:

答案 0 :(得分:3)

对于2小时10分钟的情况,diff.Hours & diff.Minutes会返回210,因为&会连接数字210的字符串表示形式。要按照您希望的方式格式化字符串,请使用String.Format()

String.Format("{0} hours {1} minutes", diff.Hours, diff.Minutes)

当时间超过一天时,这将显示意外结果。例如,25小时5分钟将显示为“1小时5分钟”。要解决此问题,您需要检查diff.Days的值或使用diff.TotalHours

答案 1 :(得分:1)

假设我正确地阅读了您的问题,因为date1 > date2,您将需要使用:

Dim diff = date1 - date2

否则你会回来-2小时-10分钟......:)

答案 2 :(得分:1)

从较晚的日期减去较早的日期(注意,如果您愿意,DateTime有一个Subtract方法)。另外,记得要考虑几天。为了说明这个概念,下面显示了表达大致相同时间跨度的五种方法。

请注意,TimeSpan成员属性(如天,小时,分钟等)代表时间跨度的相应组成部分(即,小时= 0 - 23,分钟= 0 - 59),而成员如TotalHours,TotalMinutes,等,代表整个范围。因此这就是为什么他们是双打......

'Assuming DateTimePicker1 has the earlier date...
Dim date1 As DateTime = Me.DateTimePicker1.Value

'Assuming DateTimePicker2 has the later date...
Dim date2 As DateTime = Me.DateTimePicker2.Value

'Get the difference (TimeSpan)...
Dim diff As System.TimeSpan = date2.Subtract(date1)

'Some different ways to express the resulting TimeSpan...
Console.WriteLine(String.Format("{0} days, {1} hrs, {2} min, {3} sec", diff.Days, diff.Hours, diff.Minutes, diff.Seconds))
Console.WriteLine("total days = " & diff.TotalDays)
Console.WriteLine("total hours = " & diff.TotalHours)
Console.WriteLine("total minutes = " & diff.TotalMinutes)
Console.WriteLine("total seconds = " & diff.TotalSeconds)

答案 3 :(得分:0)

当您解析具有不同日期格式的字符串时,您应指定格式:

date1 = DateTime.ParseExact(Me.txttanggalkembali.Value, "dd'/'MM'/'yyyy HH':'mm", CultureInfo.InvariantCulture)
date2 = DateTime.ParseExact(Me.DateTimePicker1.Value, "MM'.'dd'.'yyyy HH':'mm", CultureInfo.InvariantCulture)

答案 4 :(得分:-2)

您只需使用TotalHoursTotalMinutes属性。