如何使用DateTime比较两个时间段之间的差异?

时间:2013-12-06 15:53:19

标签: c# asp.net datetime logic

我有一个课程,有两个日期时间(开始和结束)和一个标志(Primal),在此期间必须是唯一的'true'。

public class ClassTest
{
    public long Id { get; set; }
    public string Description { get; set; }
    public bool Primal { get; set; }
    public DateTime Begin { get; set; }
    public Nullable<DateTime> End { get; set; }
}

如果有一个ClassTest填充了'Description'=“Whatever”'Primal'= true,'begin'= 06/12/2013和'End'= 10/12/2013,我尝试插入另一个对象'Primal'= true,'begin'= 05/12/2013和'End'= null,应用程序必须返回(通过一个类上的链接,验证在我这段时间内没有任何其他对象'原始'试图插入)已经是第二个对象周期的对象。

1 个答案:

答案 0 :(得分:2)

public static bool IsValid(ClassTest current, ClassTest other)
{
    if (!other.Primal || !current.Primal)
        return true;
    if (current.End.HasValue 
        && other.End.HasValue
        && (other.End.Value <= current.Begin || other.Begin >= current.End.Value))
        return true;
    if (!current.End.HasValue 
        && other.End.HasValue
        && other.End.Value <= current.Begin)
        return true;
    if (current.End.HasValue 
        && !other.End.HasValue
        && other.Begin >= current.End.Value)
        return true;

    return false;
}

var isUnique = existing.All(item => IsValid(item, newItem));