• 排除节假日的日期加法


    • 功能运行环境:节假日数据存放在数据库表中,格式如下

       

      //判断日期是否是节假日
            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;
            }

  • 相关阅读:
    C++扬帆远航——4(百钱百鸡)
    C++扬帆远航——3(打印图形)
    C++扬帆远航——2
    web开发之Servlet 三
    web开发之Servlet 二
    web开发之Servlet 一
    迟来的2017年计划
    JSP 学习二
    JSP 学习一
    window7 32位安装Oracle11g
  • 原文地址:https://www.cnblogs.com/andy65007/p/1261252.html
Copyright © 2020-2023  润新知