APS算法-截取时间范围内的时间段

2015-12-17 0 279
APS算法-截取时间范围内的时间段
/// <summary>
/// 截取时间范围内的时间段
/// </summary>
public static List<SJDuan> GetBetween(this SortedList<DateTime, SJDuan> duans, DateTime begin, DateTime end)
{
    DebugHelper.Start("GetBetween"); // 用于时间统计
    
    var rslt = new List<SJDuan>();
    if (end > begin)
    {
        var first = duans.Keys.GetFirstIndexBefore(begin);
        if (first == null)
        {
            first = 0;
        }
        var last = duans.Keys.GetFirstIndexAfter(end);
        if (last == null)
        {
            last = duans.Count - 1;
        }
        else
        {
            last = last - 1;
        }

        for (int i = first.Value; i <= last; i++)
        {
            var duan = duans.Values[i];
            if (duan.end > begin && duan.begin < end)
            {
                var dbegin = duan.begin > begin ? duan.begin : begin;
                var dend = duan.end < end ? duan.end : end;
                rslt.Add(new SJDuan(dbegin, dend));
            }
        }
    }
    DebugHelper.Stop("GetBetween");
    return rslt;
}

遇见资源网 lua APS算法-截取时间范围内的时间段 http://www.ox520.com/14745.html

APS算法-截取时间范围内的时间段
下一篇:

已经没有下一篇了!

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务