日有没有办法让所有指定的年份和月份的某一天发生的历史日期..获取整个5月的日数从
例如: - 如果我有日星期四然后我需要2016年12月的所有日期。然后收集应该包含日期1/12/2016,8/12/2016,15/12/2016,22/12/2016,29/12/2016。
日有没有办法让所有指定的年份和月份的某一天发生的历史日期..获取整个5月的日数从
例如: - 如果我有日星期四然后我需要2016年12月的所有日期。然后收集应该包含日期1/12/2016,8/12/2016,15/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
2016年12月8日12:00:00 AM
2016年12月15日上午12点00分00秒
2016年12月22日上午12点00分00秒
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月的第一个星期四,你应该可以完成其余的工作。
但是如果我有星期一的参数值,那么我需要2016年12月的星期一到来的所有日期。 – imlim
长格式版本...
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;
}
你有什么修整了吗? –