日有沒有辦法讓所有指定的年份和月份的某一天發生的歷史日期..獲取整個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;
}
你有什麼修整了嗎? –