如何计算两个DateTimes之间的正时差异

时间:2014-05-12 15:58:39

标签: vb.net datepicker date-arithmetic

我有两个日期时间选择器开始时间和结束时间。我必须计算从这个结束时间到开始时间的时间之间的差异。还有如何检查上午或下午来计算时差。

我已经尝试过使用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小时,虽然一天变化但我得到了错误的差异

1 个答案:

答案 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