获取Ranges之间的日期,c#

时间:2011-02-17 10:57:48

标签: c# asp.net

我有两个约会

  
      
  1. 21/01/2011 [来自日期]
  2.   
  3. 25/01/2011 [To Date]
  4.   

如何使用c#

获取这些范围之间的所有日期

答案应该是

  

21/01/2011
22/01/2011
  23/01/2011
24/01/2011
  25/01/2011

7 个答案:

答案 0 :(得分:8)

var allDates = Enumerable.Range(0, int.MaxValue)
                         .Select(x => fromDate.Date.AddDays(x))
                         .TakeWhile(x => x <= toDate.Date);

答案 1 :(得分:2)

答案 2 :(得分:2)

var dateArr = new List<DateTime>();

for (var date = startDate; date <= endDate; date = date.AddDays(1)) {
   dateArr.Add(date);
}

现在 dateArr 包含您所需的日期。

答案 3 :(得分:2)

public System.Collections.Generic.IEnumerable<DateTime> GetDatesBetween(
    DateTime start,
    DateTime end
    )
{
    DateTime current = start;
    while (current <= end) 
    {
        yield return current.Date;
        current = current.AddDays(1);
    }
}

应该做的工作

[edit]添加.Date以将日期“舍入”到中间

答案 4 :(得分:2)

怎么样:

        var startDT = new DateTime(2011, 01, 21);
        var endDT = new DateTime(2011, 01, 25);
        var workDT = startDT;
        do
        {
            Console.WriteLine(workDT.ToString("dd/MM/yyyy"));
            workDT = workDT.AddDays(1);
        } while (workDT <= endDT);
        Console.ReadLine();

答案 5 :(得分:2)

我不知道我们是否有任何内容可以在Framework中内置,但你可以试试这个:

DateTime dt1 = new DateTime(2011,01,21);
DateTime dt2 = new DateTime(2011,01,25);
List<DateTime> datetimerange = new List<DateTime>();
while(DateTime.Compare(dt1,dt2) <= 0)
{
        datetimerange.Add(dt1);
        dt1 = dt1.AddDays(1);

}

答案 6 :(得分:0)

if (toDate < fromDate)
  return;

var days = (new DateTime[(toDate - fromDate).Days + 1).
             Select((x, i) => fromDate.AddDays(i));