2011-09-28 82 views
0

例如,如果我給開始日期 15-MAR-2009和結束日期 15-MAR-2010,我想要得到的日期範圍爲如下,如何獲得一個月範圍內指定日期的範圍

Start Date  End Date 

15-mar-2009  15-Apr-2009 
15-apr-2009  15-may-2009  
... 
15-mar-2010  15-apr-2010 

任何人都可以請幫助我得到這個。

回答

1

你可以嘗試這樣的事情,有一個返回值IEnumerable<DateTime>擴展方法(或非擴展方法),你可以在這個迭代或者用它在LINQ表達等使用像

public static IEnumerable<DateTime> EnumerateUntilAfter(this DateTime startDate, DateTime endDate) 
{ 
    if(endDate < startDate) 
     throw new ArgumentOutOfRangeException("End date must be less than start date"); 
    return EnumerateUntilAfterImpl(startDate, endDate); 
} 

private static IEnumerable<DateTime> EnumerateUntilAfterImpl(DateTime startDate, DateTime endDate) 
{ 
    while (startDate <= endDate) 
    { 
     yield return startDate; 
     startDate = startDate.AddMonths(1); 
    } 
} 

public void DoTheThing(DateTime start, DateTime end) 
{ 
    Console.WriteLine("StartDate\tEndDate"); 
    foreach (var date in start.EnumerateUntilAfter(end)) 
     Console.WriteLine("{0}\t{1}", date, date.AddMonths(1)); 
} 

給你

StartDate EndDate 
15-Mar-2009 15-Apr-2009 
15-Apr-2009 15-May-2009 
15-May-2009 15-Jun-2009 
15-Jun-2009 15-Jul-2009 
15-Jul-2009 15-Aug-2009 
15-Aug-2009 15-Sep-2009 
15-Sep-2009 15-Oct-2009 
15-Oct-2009 15-Nov-2009 
15-Nov-2009 15-Dec-2009 
15-Dec-2009 15-Jan-2010 
15-Jan-2010 15-Feb-2010 
15-Feb-2010 15-Mar-2010 
15-Mar-2010 15-Apr-2010 
相關問題