我做了一个项目汽车租赁,但我很难计算时间,你迟到的时候接受罚款,请帮帮我
这是我的代码
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分钟
有人帮帮我,,,拜托......答案 0 :(得分:3)
对于2小时10分钟的情况,diff.Hours & diff.Minutes
会返回210
,因为&
会连接数字2
和10
的字符串表示形式。要按照您希望的方式格式化字符串,请使用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)
您只需使用TotalHours和TotalMinutes属性。