【问题标题】:How to calculate positive difference between time from two DateTimes如何计算两个日期时间的时间之间的正差
【发布时间】:2014-06-30 02:06:58
【问题描述】:

我有两个日期时间选择器开始时间和结束时间。我必须计算这个结束时间和开始时间之间的时间差。以及如何检查 am 或 pm 来计算时间差。

我已经通过使用时间跨度进行了尝试。它给了我正确的答案,但是当我选择时间假设为结束时间 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 小时,虽然天变了,但我弄错了差异

【问题讨论】:

  • 请编辑以显示您尝试过的代码
  • 看看DATEDIFF函数......

标签: vb.net datepicker date-arithmetic


【解决方案1】:

两个DateTimes 之间的差异会返回一个TimeSpan 对象。您可以使用DateTimeSubtract 方法,甚至可以使用-。您必须使用从较晚的日期中减去较早的日期:

Dim span As TimeSpan = dtpEnd.Value - dtpStart.Value

您可以使用Duration 方法获取绝对时间跨度,那么顺序无关紧要:

Dim duration As TimeSpan = (dtpStart.Value - dtpEnd.Value).Duration()

例如,如果您想要之间的分钟数,请使用 TotalMinutes 属性:

Dim minutes As Int32 = CInt(duration.TotalMinutes)

【讨论】:

  • 感谢回复。我想以分钟为单位显示两次之间的总差异。例如:开始时间=10:10:09 和结束时间=11:05:09 所以差异应该是 55分钟。我想像这样显示差异
  • 当我选择开始时间:晚上 10:57:02,结束时间:上午 12:00:02 时,它给了我与 -1377 的区别。如何解决这个问题
  • 我已经相应地编辑了我的答案,甚至在你的最后评论之前(我不知何故错过了)。
  • 感谢回复,我通过这段代码得到了正确的输出
猜你喜欢
  • 1970-01-01
  • 2021-11-25
  • 2011-08-01
  • 2021-10-09
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多