我有两个日期时间选择器开始时间和结束时间。我必须计算从这个结束时间到开始时间的时间之间的差异。还有如何检查上午或下午来计算时差。
我已经尝试过使用timepan。它给了我正确的答案,但是当我选择时间假设为结束时间的12:58:02和开始时间的10:57:05时,它给出了错误的答案,如-599
。我想知道如何将这种负面差异转化为正面。
我尝试过使用以下代码:
Dim startTime As Date
Dim endTime As Date
startTime = Convert.ToDateTime(dtpOpStTime.Value)
endTime = Convert.ToDateTime(dtpOpETime.Value)
Dim diff As System.TimeSpan
diff = endTime - startTime
actualTime = Convert.ToString(Int32.Parse(diff.Hours.ToString()) * 60 + Int32.Parse(diff.Minutes.ToString()))
ucTime.TxtCode.Text = actualTime
我的另一个问题如下: 我有4个日期时间选择器,2个用于显示开始日期和结束日期,2个用于开始时间和结束时间。因此,当我更改日期时间时,获取错误。所以如何解决此问题。 我有以下代码:
Dim span As TimeSpan = dtpOpEDate.Value - dtpOpStdate.Value
Dim span1 As TimeSpan = dtpOpETime.Value - dtpOpStTime.Value
Dim duration As TimeSpan = span.Duration()
Dim duration1 As TimeSpan = span1.Duration()
Dim durDay As Int32 = duration.Days
Dim durHr As Int32 = duration1.Hours
Dim durMin As Int32 = duration1.Minutes
Dim totalDur = durDay * 24 * 60 + durHr * 60 + durMin
actualTime = totalDur.ToString()
ucTime.TxtCode.Text = actualTime
问题是通过这个我得到错误的时差,当我改变假设开始时间10:51:02 PM和结束时间到3:51:04 AM并且开始日期到2014年3月25日和结束日期到26 -Mar-2014然后差异应该是5小时,虽然一天变化但我得到了错误的差异
答案 0 :(得分:2)
两个DateTimes
之间的差异会返回TimeSpan
个对象。您可以使用Subtract
的{{1}}方法,也可以使用DateTime
。您必须使用从较晚日期减去较早的日期:
-
您可以使用Dim span As TimeSpan = dtpEnd.Value - dtpStart.Value
方法获得绝对时间跨度,然后顺序并不重要:
Duration
如果您想要两分钟之间的分钟数,请使用Dim duration As TimeSpan = (dtpStart.Value - dtpEnd.Value).Duration()
属性:
TotalMinutes