判断是否是节假日

最近在做账单功能,需要智能跳过节假日生成账单。网上找了一会,发现目前现成的接口都是需要购买的,而且价格还是比较贵的。本着求人不如求己的原则,自己整理了一下2021年的节假日跟周末补班的日期,写了一个小的demo,有需要的可以自取哈~

        /// <summary>
        /// 判断法定工作日
        /// </summary>
        /// <param name="dt">时间</param>
        /// <returns>0上班,1不需要上班的周末(也包括节假日),2法定节假日</returns>
   public int IsHolidayOrWeeksu(DateTime dt)
    {  
//特殊的周末(周末却上班)
 string[] specalWeek2021 = {"0207", "0213", "0214","0220","0425" ,"0508","0918","0926","1009"};
        
 //法定假日
 string[] holiday2021 = { "0101", "0211", "0212","0215","0216","0217","0403","0404","0405"
 ,"0501","0502","0503","0504","0505","0614","0920","0921","1001","1004","1005","1006","1007" };
         
            bool isHoildayOrWeek = false;
            //取年
            string weekYear = dt.Year.ToString();
            //取月日
            string[] weekDate = { dt.ToString("MMdd") };
            //判断周末
            if ((int)dt.DayOfWeek == 0 || (int)dt.DayOfWeek == 6)
            {
                //周末是否需要上班
                switch (weekYear)
                {
                    case "2021":
                        isHoildayOrWeek = specalWeek2021.Intersect(weekDate).Count() == 0;
                        break;     
                }
            }
            if (isHoildayOrWeek)
            {
                return 1;
            }
            //判断法定节假日
            switch (weekYear)
            {
                case "2021":
                    isHoildayOrWeek = holiday2021.Intersect(weekDate).Count() > 0;
                    break;  
            }
            if (isHoildayOrWeek)
            {
                return 2;
            }
            return 0;
  }

为您推荐

发表评论

邮箱地址不会被公开。 必填项已用*标注