所以这是我必须得到的东西结束期间从日期和排除星期六和星期日和日历中的特定日期,所以我已经与列表,但我需要与数据库做这件事,因为我可能需要添加一些额外的假日由时间去,我有数据库和一切设置添加我只需要得到的功能,将正确读取数据库中的日期,并排除他们
下面是我如何使用list实现的代码:
List<DateTime> Holidays = new List<DateTime>()
{
new DateTime(2014, 01, 01),
new DateTime(2014, 04, 18),
new DateTime(2014, 12, 24),
new DateTime(2014, 12, 25),
new DateTime(2014, 12, 26),
new DateTime(2014, 12, 31)
};
public Form1()
{
InitializeComponent();
}
DateTime AddBusinessDays(int days, DateTime starDate)
{
DateTime tempdt = new DateTime(starDate.Year, starDate.Month, starDate.Day);
tempdt = ExHolidays(tempdt, Holidays);
if (tempdt > starDate.Date && !(days == 0))
tempdt = tempdt.AddDays(-1);
days = days - 1;
while (days > 0)
{
tempdt = tempdt.AddDays(1);
// ja sakuma diena ir brivdiena >>> nakamas darbadienas -1
tempdt = ExHolidays(tempdt, Holidays);
days = days - 1;
}
return tempdt;
}
DateTime ExHolidays(DateTime startDate, List<DateTime> holidays)
{
while (!IsWorkDay(startDate, holidays))
{
startDate = startDate.AddDays(1);
}
return startDate;
}
bool IsWorkDay(DateTime startDate, List<DateTime> holidays)
{
if ((startDate.DayOfWeek == DayOfWeek.Saturday || startDate.DayOfWeek == DayOfWeek.Sunday ||holidays.Contains(startDate)))
{
return false;
}
else
{
return true;
}
}
下面是我如何执行它的例子,例如添加30个工作日:
dateTimePicker2.Value = AddBusinessDays(30, dateTimePicker1.Value);
这一切工作,我只是想能够添加额外的假日日期,我认为最好的方法是通过数据库
发布于 2014-03-17 16:12:29
这真的取决于你想要展示什么假日。有些节假日是固定的,而另一些则是一个月的第X天。例如,感恩节总是第4个星期四,所以您需要一个足够灵活的数据库设计来捕捉这一点,然后在您的应用程序中构建将第4个星期四转换为实际日期的功能。
然而,数据库选项是很好的,因为您只能拉回您向用户显示的日期所在月份内存在的假期,而不必在代码中以编程方式执行此操作。
https://stackoverflow.com/questions/22459110
复制