我试图找到一种简单的方法来解决这个问题。
我有一个初始日期和一个最终日期。
我想在给定时间内为每个日期生成一个List<Datetime>
。
示例:初始日期为“2013/12/01”,最终日期为“2013/12/05”。
我想用
自动填充列表"2013/12/01"
"2013/12/02"
"2013/12/03"
"2013/12/04"
"2013/12/05"
你会建议我什么?
由于
答案 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循环中,您可以将值放在表格上或做任何你想做的事情而不是打印出来。