如何只在时间之间获得差异

时间:2014-08-11 08:31:09

标签: .net vb.net datetime timespan

我只想要两个值之间的时差,当我跨越12个小时时,它会给出错误的值。

ex:早上6:00并选择7:00 PM然后将结果显示为660分钟而不是780分钟。 它可以工作,直到我选择12小时范围之间的时间。

请帮我解决这个问题。

Dim sDateStart As DateTime = Convert.ToDateTime(CType(cboStartHours.SelectedItem, ListItem).ItemText & ":" _
                          & CType(cboStartMins.SelectedItem, ListItem).ItemText & ":00 " _
                          & CType(cboStartAMPM.SelectedItem, ListItem).ItemText)
Dim sDateEnd As DateTime = Convert.ToDateTime(CType(cboEndHours.SelectedItem, ListItem).ItemText & ":" _
                          & CType(cboEndMins.SelectedItem, ListItem).ItemText & ":00 " _
                          & CType(cboEndAMPM.SelectedItem, ListItem).ItemText)
Dim TS As TimeSpan = sDateEnd - sDateStart

Console.WriteLine(TS.Duration.TotalMinutes)

谢谢

2 个答案:

答案 0 :(得分:4)

也试试这个。在VB.Net中,有一种方法可以直接用于获取年/月/季度/天/小时/分钟/秒中两个日期值之间的差异。

Dim iMin As Long = DateDiff(DateInterval.Minute, sDateStart, sDateEnd)

您可以在msdn

上找到完整的参考和示例

在C#中

DateTime sDateStart = New DateTime(2014,07,06,18,0,0);   //06-Jul-2014 06:00PM
DateTime sDateEnd = New DateTime(2014,08,08,7,0,0);      //08-Aug-2014 07:00AM
TimeSpan ts = sDateEnd - sDateStart;
int iMin = ts.TotalMinutes;     //Result of ts.TotalMinutes: 46860.0F

答案 1 :(得分:3)

如果您只想要两个DateTime值之间的时差,则可以使用DateTime.TimeOfDay忽略日期部分,TimesSpan会返回var diff = sDateEnd.TimeOfDay - sDateStart.TimeOfDay;

所以你得到了这样的差异:

DateTime date1 = new DateTime(2014, 01, 01, 16, 0, 0); // In the afternoon of day 1.
DateTime date2 = new DateTime(2014, 01, 02, 09, 0, 0); // In the morning of day 2.

var diff = date2.TimeOfDay - date1.TimeOfDay;

if (diff.TotalSeconds < 0)
    diff = diff + TimeSpan.FromDays(1);

Console.WriteLine(diff.TotalHours); // Prints 17

如果差异是负数,则需要添加24小时(例如,如果开始日期的时间为16:00,结束的时间为09:00,则会得到-07的差异: 00.当您向其添加24小时后,您将得到17:00的正确结果。

例如:

DateTime

如果您的var diff2 = (date2 - date1); // Much simpler, but needs DateTime values less than a day apart. 值保证不到24小时,您可以随时执行此操作:

{{1}}

但有一个重要的问题:如果DateTime值超过24小时,您想要做什么?在这种情况下产生小于24小时的答案意味着什么?