通过程序选择asp.net日历中的星期

本文关键字:日历 net 过程 程序 选择 asp | 更新日期: 2023-09-27 18:20:26

我正试图用下面的代码来获得所有的工作日。

    private List<DateTime> getWeekDays(DateTime dt)
    {
        List<DateTime> result = new List<DateTime>();
        int month = dt.Month;
        dt = dt.AddDays(-dt.Day + 1);//Sets dt to first day of month
        //Sets dt to the first week day of the month;
        if (dt.DayOfWeek != DayOfWeek.Monday)
            while (dt.DayOfWeek != DayOfWeek.Friday)
                dt = dt.AddDays(1);
        //Adds the week day and stops when next month is reached.
        while (dt.Month == month)
        {
            result.Add(dt);
            dt = dt.AddDays(dt.DayOfWeek == DayOfWeek.Friday ? 3 : 1);
        }
        return result;
    }

但这并不正确。当我通过July月到getWeekDays(DateTime dt)的方法时,这就正确地给出了所有的星期天。但如果我通过了AugustSemptember,则上述代码不会返回给定月份的所有星期天。

错误在哪里?

通过程序选择asp.net日历中的星期

        private List<DateTime> getWeekDays(DateTime dt)
        {
            List<DateTime> result = new List<DateTime>();
            int month = dt.Month;
            dt = dt.AddDays(-dt.Day + 1);//Sets dt to first day of month
            //If dt is a weekend add days to move it to Monday (your while loop below will handle the rest)
            if(dt.DayOfWeek == DayOfWeek.Saturday)
            {
                dt = dt.AddDays(2);
            }
            else if (dt.DayOfWeek == DayOfWeek.Sunday)
            {
                dt = dt.AddDays(1);
            }
            //Adds the week day and stops when next month is reached.
            while (dt.Month == month)
            {
                result.Add(dt);
                dt = dt.AddDays(dt.DayOfWeek == DayOfWeek.Friday ? 3 : 1);
            }
            return result;
        }