[英]how to calculate time using 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 分钟
有人帮助我,,,请......
对于 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
。
假设我正确阅读了您的问题,因为date1 > date2
,那么您将需要使用:
Dim diff = date1 - date2
否则你会回来 -2 小时 -10 分钟...... :)
从较晚的日期中减去较早的日期(请注意,如果您愿意,请注意 DateTime 有一个 Subtract 方法)。 另外,请记住计算天数。 为了说明这个概念,下面展示了表示大致相同时间跨度的五种方法。
请注意,TimeSpan 成员属性,如 Days、Hours、Minutes 等,表示时间跨度的各个组成部分(即 Hours = 0 - 23,Minutes = 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)
当您解析具有不同日期格式的字符串时,您应该指定格式是什么:
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)
您只需要改用TotalHours和TotalMinutes属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.