从一周中的一天开始获取一个月的所有日期



是否有任何方法可以获取指定月和年的特定日期的所有发生日期。

例如: - 如果我有一天星期四,那么我需要2016年12月的所有日期。2016,22/12/2016,29/12/2016。

您可以创建一个函数,以根据特定年份(如

)获取本月的日期列表
public static List<DateTime> GetDates(int year, int month,string day)
    {
       return Enumerable.Range(1, DateTime.DaysInMonth(year, month))
            .Where(d=>new DateTime(year, month, d).ToString("dddd").Equals(day))            
           .Select(d => new DateTime(year, month, d)).ToList(); 
    }

现在称此功能为

var dates=GetDates(2016,12,"Thursday");
    foreach(var d in dates){
    Console.WriteLine(d.ToString());
    }

输出将为

12/1/2016 12:00:00 AM

12/8/2016 12:00:00 AM

12/15/2016 12:00:00 AM

12/22/2016 12:00:00 AM

12/29/2016 12:00:00 AM

现在您可以根据一天的完整列表。您可以根据自己的要求进一步使用它。

DateTime decFirst = new DateTime(2016, 12, 1);
int offset = (int)decFirst.DayOfWeek;
DateTime decThursday = decFirst.AddDays(offset);

现在您有12月的第一个星期四,您应该能够完成其余的事情。

长表单...

    private void button1_Click(object sender, EventArgs e)
    {
        List<DateTime> Thursdays = DaysOfMonth(2016, 12, DayOfWeek.Thursday);
        foreach(DateTime dt in Thursdays)
        {
            Console.WriteLine(dt.ToString());
        }   
    }
    public static List<DateTime> DaysOfMonth(int year, int month, DayOfWeek day)
    {
        List<DateTime> dates = new List<DateTime>();
        for (int i = 1; i <= DateTime.DaysInMonth(year, month); i++)
        {
            DateTime dt = new DateTime(year, month, i);
            if (dt.DayOfWeek == day)
            {
                dates.Add(dt);
            }
        }
        return dates;
    }

最新更新