以下是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我需要我只需要把它作为假期。
答案 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;
}