查找日期之间的日期

时间:2013-10-24 09:31:10

标签: c# asp.net

我有一系列具有开始日期和结束日期的术语。如何判断今天是否属于这两个术语之间。代码是

  var termsforcurrentCalendar = UnitOfWork.SchoolTerms.Query().Where(x
  => x.SchoolCalendarId == currentCalendar.SchoolCalendarId).ToArray();

   var noOfTerms = termsforcurrentCalendar.Count();

    for (int i = 0; i < noOfTerms; i++)
   {
      if (DateTime.Today > termsforcurrentCalendar[i].EndDate)
      {
          if (i != noOfTerms)
       {
           if (DateTime.Today < termsforcurrentCalendar[i + 1].StartDate)
        {
           datetoBeChecked = termsforcurrentCalendar[i + 1].StartDate;
        }
     }
    }
   }

3 个答案:

答案 0 :(得分:1)

如何使用一点linq的好处:

var isTodayInTerm = termsforcurrentCalendar.Any(a => 
    DateTime.Today >= a.StartDate && DateTime.Today <= a.EndDate);

根据评论,获得下一个学期:

var nextTerm = termsforcurrentCalendar.OrderBy(a => a.StartDate).FirstOrDefault(a =>
    a.StartDate >= DateTime.Today);

答案 1 :(得分:0)

  var isTodayInTerm = termsforcurrentCalendar.Any(a =>DateTime.Today >= a.StartDate && DateTime.Today <= a.EndDate);

    if (!isTodayInTerm)
    {
        var firstAvailableDate = termsforcurrentCalendar.FirstOrDefault(z => z.StartDate > DateTime.Today);
        datetoBeChecked = firstAvailableDate.StartDate;
    }

答案 2 :(得分:0)

var isTodayInTerm = termsforcurrentCalendar.Any(a =>DateTime.Today >= a.StartDate && DateTime.Today <= a.EndDate);

if (!isTodayInTerm)
{
    var firstAvailableDate = termsforcurrentCalendar.OrderBy(a=>a.StartDate).FirstOrDefault(z => z.StartDate > DateTime.Today);
    datetoBeChecked = firstAvailableDate.StartDate;
}