是否有办法获得指定月份和年份特定日期的所有发生日期..
例如: - 如果我有Day 星期四,那么我需要2016年12月的所有日期。然后收集应包含日期2016年1月12日,2016年12月12日,15/12 / 2016年,2016年12月22日,2016年12月29日。
答案 0 :(得分:1)
您可以创建一个函数来获取基于特定年份日期的月份日期列表,例如
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
现在您拥有基于一天的完整日期列表。您可以根据您的要求进一步使用它。
答案 1 :(得分:0)
DateTime decFirst = new DateTime(2016, 12, 1);
int offset = (int)decFirst.DayOfWeek;
DateTime decThursday = decFirst.AddDays(offset);
现在你有12月的第一个星期四,你应该可以做其余的事。
答案 2 :(得分:0)
长篇版本......
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;
}