如何使用 C# 获得一整天

本文关键字:一整天 何使用 | 更新日期: 2023-09-27 18:32:06

这是DateTime Picker代码的一部分.当有人从日期时间选择器中选择StartDate和EndDate时,它会进入unitHolidays。

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

全假日2013/9/19 12:00:00 AM 至 2013/9/20 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 AM,我需要,那么只有我需要把它当作假期。

如何使用 C# 获得一整天

如前所述,如下所示:

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;
     }
}

整天难道不会被描述为9/19/2013 12:00:00 AM9/19/2013 11:59:59 PM或任何>=到开始日期和<结束日期的事情吗?您应该使用<而不是<=因为它将包括不是同一天的第二天。

你想要这样的东西:

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