A Coder

Coding My Dream!

0%

计算工作日

using System;
using System.Collections.Generic;

namespace WorkDay
{
    class Program
    {

        static readonly List<string> Holidays=new List<string>()
            {
               "2013-01-01","2013-01-02","2013-01-03",
                "2013-02-09","2013-02-10","2013-02-11", "2013-02-12","2013-02-13","2013-02-14","2013-02-15",
                "2013-04-04","2013-04-05","2013-04-06",
                "2013-04-29","2013-04-30","2013-05-01",
                "2013-06-10","2013-06-11","2013-06-12",
                "2013-09-19","2013-09-20","2013-09-21",
                "2013-10-01","2013-10-02","2013-10-03","2013-10-04","2013-10-05","2013-10-06","2013-10-07"
            };
        static readonly List<string> UnHolidays = new List<string>()
            {
               "2013-01-05","2013-01-06",
               "2013-02-16","2013-02-17",
               "2013-04-07",
               "2013-04-27","2013-04-28",
               "2013-06-08","2013-06-09",
               "2013-09-22",
               "2013-09-29","2013-10-12"
            };

        static void Main(string[] args)
        {
            DateTime startDate=new DateTime(2013,1,1);
            DateTime endDate =new DateTime(2013,1,31);
            int day = CalcWorkDay(startDate, endDate);
            Console.WriteLine(day);
            Console.ReadKey();
        }

        static int CalcWorkDay(DateTime startDate, DateTime endDate)
        {
            DateTime dateTime = startDate;
            int day = 0;
            while (dateTime.Date<=endDate.Date)
            {
                if (JudgeWorkDay(dateTime))
                {
                    day++;
                    Console.WriteLine(dateTime.ToString("yyyy-MM-dd"));
                }
                dateTime = dateTime.AddDays(1);
            }
            return day;
        }


        static bool JudgeWorkDay(DateTime dateTime)
        {
            string dateStr = dateTime.ToString("yyyy-MM-dd");



            //判断 周六周日
            if ((dateTime.DayOfWeek == DayOfWeek.Saturday || dateTime.DayOfWeek == DayOfWeek.Sunday))
            {
                //调休日
                if (UnHolidays.Contains(dateStr))
                {
                    return true;
                }
                return false;
            }

            if (Holidays.Contains(dateStr))
            {
                return false;
            }
            return true;
        }
    }
}