C# - 如何从给定月份获取天数 previous/next 天来填充列表

C# - How Get days from given month with the previous/next days to fill List

如何获取包含给定月份的所有日期以及前几天和后一天的列表以填充一周, select 周末、节假日。

我需要 return 一个 XML 文件:

    [XmlAttribute("month")]
    [Display(Name = "Month", Description = "")]
    public int Month { get; set; }

    /// <summary>
    /// Day
    /// </summary>
    [XmlAttribute("weekday")]
    [Display(Name = "Weekday", Description = "")]
    public int Weekay { get; set; }
    /// <summary>
    /// Weekend/ Holiday Day
    /// </summary>
    [XmlAttribute("weekendday")]
    [Display(Name = "Weekendday", Description = "")]
    public int Weekendday { get; set; }

就像windows中的日历一样。 我试试这个,但只得到当月的天数

    var days = Enumerable.Range(1, DateTime.DaysInMonth(year, month))  // Days: 1, 2 ... 31 etc.
                     .Select(day => new CalendarItem(year, month, day))
                     .ToList();

使用此日期时间扩展:

 static class DateExtensions
    {
        public static IEnumerable<DateTime> GetRange(this DateTime source, int days)
        {
            for (var current = 0; current < days; ++current)
            {
                yield return source.AddDays(current);
            };
        }

        public static DateTime NextDayOfWeek(this DateTime start, DayOfWeek dayOfWeek)
        {
            while (start.DayOfWeek != dayOfWeek)
                start = start.AddDays(-1);

            return start;
        }
    }

在我的Class中我使用这个:

    var numberOfDays = 42;

    DateTime startDate = new DateTime(year, month, 1).NextDayOfWeek(DayOfWeek.Monday);
    var dates = startDate.GetRange(numberOfDays)
        .Select(date => new CalendarDaysItem(date.Month, date.Day))
                         .ToList();

定义常量以获取天数; 获取起始日为星期一的日子;