2016-12-18 60 views
-1

日有沒有辦法讓所有指定的年份和月份的某一天發生的歷史日期..獲取整個5月的日數從

例如: - 如果我有日星期四然後我需要2016年12月的所有日期。然後收集應該包含日期1/12/2016,8/12/2016,15/12/2016,22/12/2016,29/12/2016。

+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

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

現在您有完整的基於一天的日期列表。您可以根據您的要求進一步使用它。

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

現在你有了12月的第一個星期四,你應該可以完成其餘的工作。

+0

但是如果我有星期一的參數值,那麼我需要2016年12月的星期一到來的所有日期。 – imlim

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; 
    }