如何使用C#一整天

时间:2013-09-19 16:39:30

标签: c# asp.net c#-4.0

以下是DateTime Picker的部分代码。当有人选择StartDate& EndDate从日期时间选择器到unitHolidays。

在这里我需要充分假期。我需要考虑是否有人选择任何开始日期,但时间是凌晨12:00:00到任何结束日期,时间是凌晨12:00:00(例如:查看完整假期)

完整假期 9/19/2013 12:00:00 AM至9/20/2013 12:00:00 AM

但我的以下代码,任何12小时的时段都是假期。

  foreach (UnitHolidays uh in unitHolidays)
  {

       for (DateTime dth = uh.StartDate; dth <= uh.EndDate; dth = dth.AddDays(1))
       { 
           RadCalendarDay rcdHoliday = new RadCalendarDay();
           rcdHoliday.Date = dth.Date;
           rcdHoliday.IsDisabled = true;
           rcdHoliday.IsSelectable = true;
           rcdHoliday.ToolTip = "Holiday";
           rcdHoliday.ItemStyle.BackColor = System.Drawing.Color.MediumOrchid;
           rdpStDt.Calendar.SpecialDays.Add(rcdHoliday);
       }
   }

如果有人选择上午12:00:00到凌晨12:00:00我需要我只需要把它作为假期。

2 个答案:

答案 0 :(得分:2)

如上所述,类似:

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

     public List<Holiday> GetHolidays()
     {
          return new List<Holiday>() { new Holiday() { 
                Start = new DateTime(2013, 9, 19), 
                End = new DateTime(2013, 9, 20)
          };
     }

     public bool IsHoliday(DateTime date)
     {
          return GetHolidays().Where(c => c.Start <= date && c.End >= date).Count() > 0;
     }
}

但是,我认为这会更轻松,更轻松:

public class Holiday
{
     public List<DateTime> GetHolidays()
     {
          return new List<DateTime>() { 
               new DateTime(2013, 9, 19)
          };
     }

     public bool IsHoliday(DateTime date)
     {
          return GetHolidays().Where(c => c.Date == date.Date).Count() > 0;
     }
}

答案 1 :(得分:1)

对于开始日期9/19/2013 12:00:00 AM结束日期,整天不会被描述为9/19/2013 11:59:59 PM>=或任何<吗?您应该使用<而不是<=,因为它会包含第二天,而不是同一天。

你想要这样的东西:

private bool IsHoliday(DateTime startDate, DateTime endDate)
{
    return DateTime.Now >= startDate && DateTime.Now < endDate;
}