使用一系列日期时间填充List的简单方法

时间:2013-12-04 18:19:37

标签: c# .net datetime

我试图找到一种简单的方法来解决这个问题。

我有一个初始日期和一个最终日期。

我想在给定时间内为每个日期生成一个List<Datetime>


示例:初始日期为“2013/12/01”,最终日期为“2013/12/05”。

我想用

自动填充列表
"2013/12/01"
"2013/12/02"
"2013/12/03"
"2013/12/04"
"2013/12/05"

你会建议我什么?

由于

5 个答案:

答案 0 :(得分:10)

var startDate = new DateTime(2013, 12, 1);
var endDate = new DateTime(2013, 12, 5);

var dates = Enumerable.Range(0, (int)(endDate - startDate).TotalDays + 1)
                      .Select(x => startDate.AddDays(x))
                      .ToList();

答案 1 :(得分:6)

for(var day = from.Date; day.Date <= end.Date; day = day.AddDays(1))
{
     list.Add(day);
}

答案 2 :(得分:3)

DateTime startDate = new DateTime(2013, 12, 1); // or any other start date
int numberOfDays = 5;
var dates  = Enumerable.Range(0, numberOfDays)
                       .Select(i => startDate.AddDays(i))
                       .ToList();

答案 3 :(得分:0)

你可以像Linq一样使用Linq:

DateTime startDate = new DateTime(2013, 12, 1);
DateTime endDate = new DateTime(2013, 12, 5);
List<DateTime> dates =
                      Enumerable.Range(0, ((endDate - startDate).Days) + 1)
                      .Select(n => startDate.AddDays(n))
                      .ToList();

输出:

foreach (var item in dates)
{
    Console.WriteLine(item.ToShortDateString());
}

输出:

01/12/2013
02/12/2013
03/12/2013
04/12/2013
05/12/2013

答案 4 :(得分:0)

您可以这样做:

DECLARE @startdate datetime, @enddate datetime, @increment int
SET @startdate = '2013/12/01'
SET @enddate = '2013/12/05'
SET @increment = 0
WHILE DATEADD(dd, @increment, @startdate) <= @enddate
  BEGIN
    SELECT DATEADD(dd, @increment, @startdate)
    SET @increment = @increment + 1
  END

在while循环中,您可以将值放在表格上或做任何你想做的事情而不是打印出来。