检查日期是否在收集日期期间之间

时间:2018-08-23 19:10:17

标签: c# asp.net-mvc entity-framework asp.net-mvc-4

我正在尝试查找给定的日期是否介于一组时间段之间 我有一个带有开始和结束日期的期间类,以及一个检查它是否在期间集合中的日期。这是示例代码。

public class Period
{
    public Guid PeriodId { get; set; }

    public DateTime Start { get; set; }
    public DateTime End { get; set; }        
}

...
// main class

public Collection<Period> Periods = Collection of Periods ;
public DateTime TimeToCheck = somedatevalue;

public bool IsTimeInGivenPeriods(TimeToCheck, Periods)
{
     if(TimeToCheck is in Periods)
         return true;
     else
         retrun false;
}

2 个答案:

答案 0 :(得分:2)

您可以将其定义为extension method

setApiKey

现在您将能够执行此操作:

public static void IsTimeInGivenPeriods<IEnumerable<Period>>(this IEnumerable<Period> Periods, DateTime TimeToCheck )
    {
         return Periods?.Any(p=>  p.Start <= TimeToCheck && p.End < TimeToCheck )  ?? false;
    }

答案 1 :(得分:0)

您可以检查日期是否大于或等于任何期间的开始日期,并且小于或等于该期间的结束日期:

{ read -r header; echo "$header"; sort -g -k 1.2,1; } < filename

如果您需要扩展方法,则可以像下面这样实现:

public static bool IsTimeInGivenPeriods(DateTime timeToCheck, IEnumerable<Period> periods)
{
    return periods?.Any(p => timeToCheck >= p.Start && timeToCheck <= p.End) ?? false;
}

然后像这样使用它:

public static class Extensions
{
    public static bool ContainsDate(this IEnumerable<Period> periods, DateTime timeToCheck)
    {
        return periods?.Any(p => timeToCheck >= p.Start && timeToCheck <= p.End) ?? false;
    }
}