2012-09-14 74 views
-1

如何獲得給定的兩個日期之間的所有日期,給定「日期名稱」?
例如:START_DATE = 2011年1月1日
            END_DATE = 2011年1月20日
            天名稱 = 週日
如何獲得所有在c日期的2日期之間給出的「日期名稱」日期

在這裏,我們需要DAYNAME把所有日期爲 「SUNDAY」
例如:

Jan 02, 2011 
Jan 09, 2011 
Jan 16, 2011 
+0

最有可能你會發現在喬恩斯基特的函數[野田時間](http://code.google.com/p/noda-time/)。 –

回答

1
DateTime startDate = new DateTime(2011, 1, 1); 
DateTime endDate = new DateTime(2011, 1, 20); 

while (startDate < endDate) 
{ 
    if (startDate.DayOfWeek == DayOfWeek.Sunday) 
    { 
     // Do something 
    } 

    startDate = startDate.AddDays(1); 
} 
1

如何像

DateTime startDate = new DateTime(2011, 01, 01); 
DateTime endDate = new DateTime(2011, 01, 20); 
string dayName = "sunday"; 

List<DateTime> list = new List<DateTime>(); 
for (DateTime runDate = startDate; runDate <= endDate; runDate = runDate.AddDays(1)) 
{ 
    if (runDate.DayOfWeek.ToString().ToLower() == dayName) 
     list.Add(runDate); 
} 

甚至使用Enum.TryParse

DateTime startDate = new DateTime(2011, 01, 01); 
DateTime endDate = new DateTime(2011, 01, 20); 
string dayName = "sunday"; 
DayOfWeek dow; 
Enum.TryParse(dayName, true, out dow); 

List<DateTime> list = new List<DateTime>(); 
for (DateTime runDate = startDate; runDate <= endDate; runDate = runDate.AddDays(1)) 
{ 
    if (runDate.DayOfWeek == dow) 
     list.Add(runDate); 
} 
+0

Worked perfect for me..thx :) – DharaPPatel

0

無需測試:

DateTime start = x; 
DateTime end = y; 

while (start.DayOfWeek != z) 
    start = start.AddDays(1); 

while (start <= end) 
{ 
    //DoStuff 

    start = start.AddDays(7); 
} 
11

我喜歡用Enumerable.Range的任務,這樣的:

DateTime start = new DateTime(2011,1,1); 
DateTime end = new DateTime(2011,1,20); 

var datesThatAreSundays = Enumerable 
    .Range(start.DayOfYear, end.Subtract(start).Days + 1) 
    .Select(n => start.AddDays(n - start.DayOfYear)) 
    .Where(d => d.DayOfWeek == DayOfWeek.Sunday); 
+1

+1我一直在尋找這樣的答案。 – Steve

+0

完美,但它不包括開始日期如何包含? – DharaPPatel

+0

@DharaPPatel碰巧代碼不正確。它現在已經修復,可以在任何日期正確工作,並且在結果中包含給定的開始日期和結束日期。感謝您指出。 –

0

你可以試試這個

var firstDate = new DateTime(2011, 1, 1); 
var lastDate = new DateTime(2011, 1, 20); 

var result = (from el in Enumerable.Range(0, (lastDate - firstDate).Days) 
         let date = firstDate.AddDays(el) 
         where date.DayOfWeek == DayOfWeek.Sunday 
         select date).ToArray(); 
相關問題