1

我只是想找到解决这个问题的逻辑,但被卡住了。

我的数据库中有 6 个日期时间列。像下面

StartDate =  {14/1/2012 11:00:00 AM}
EndDate=     {14/1/2012 11:30:00 AM}

**Break between start and End Date is 30 mins**

StartDate2 = {14/1/2012 11:30:00 AM}
EndDate2=    {14/1/2012 12:30:00 PM}

**Break between start1 and End1 Date is 1hr**

StartDate3 = {14/1/2012 12:00:00 PM}
EndDate3=    {14/1/2012 01:30:00 PM}
**Break between start2 and End2 Date is 1hr is 1hr**

我试图找到每个日期集之间的休息时间并总结决赛。

例如:

StartDate =  {14/1/2012 11:00:00 AM}
EndDate=     {14/1/2012 11:30:00 AM}

开始和结束日期之间的休息时间为 30 分钟。

但是,如果您看到开始日期和结束日期 2 和 3,则时间重叠。所以不确定时间跨度在这种情况下会有多大帮助。

所有三个时间戳之间的总休息时间和总和应该是 2 小时 30 分钟

请有人提出一些想法来解决这个问题。

提前致谢

4

1 回答 1

3

不确定时间跨度在这种情况下会有多大帮助。

TimeSpan通过从较早的时间中减去较晚的时间产生的结果将是负数。例如,

var dt1 = DateTime.Parse("02/10/2013 12:20");
var dt2 = DateTime.Parse("02/10/2013 12:00");
Console.WriteLine(dt2.Subtract(dt1));

打印-00:20:00

您可以检查间隔是否为负以检测重叠。一种方法是检查Ticks属性是否为负:

var dt1 = DateTime.Parse("02/10/2013 12:20");
var dt2 = DateTime.Parse("02/10/2013 12:00");
var diff = dt2.Subtract(dt1);
if (diff.Ticks < 0) {
    Console.WriteLine("An overlap is detected.");
}
于 2013-02-11T03:05:54.947 回答