我只是想找到一个解决这个问题的逻辑但是被卡住了。
我的数据库中有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分钟
请一些人提出一些想法来解决这个问题。
先谢谢
答案 0 :(得分: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));
您可以检查间隔是否为负值以检测重叠。一种方法是检查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.");
}