- 功能运行环境:节假日数据存放在数据库表中,格式如下
//判断日期是否是节假日
private bool IsHoliday(DateTime dt)
{
Database db = DatabaseFactory.CreateDatabase("SQLDBConnection");
string sql = @"SELECT count(*)
FROM [OA_Sys_Holiday]
WHERE [Date] = @startTime";
bool result = false;
using (DbCommand comm = db.GetSqlStringCommand(sql))
{
db.AddInParameter(comm, "@startTime", DbType.String, dt.ToShortDateString());
if ((int)db.ExecuteScalar(comm) > 0)
{
result = true;
}
}
return result;
}
//日期加法(排除节假日)
private DateTime AddDayWithoutHoliday(DateTime startDate,int days)
{
while (IsHoliday(startDate))//跳过节假日(保证开始时间不是节假日):如果开始时间是节假日,找到节假日的结束时间作为起始时间
{
startDate=startDate.AddDays(1);
DateTime dt = startDate.Date;
startDate = dt;
}
for (int i = 0; i < days; i++)
{
startDate = startDate.AddDays(1);
if (IsHoliday(startDate))
{
do
{
startDate = startDate.AddDays(1);
} while (IsHoliday(startDate));
}
}
return startDate;
}