我很擅长使用DateTime,但我想知道它是否能够动态地将两点之间的每一天添加到列表中。
例如,我的代码如下所示:
{
startTime = new DateTime(startYear, startMonth, startDay);
endTime = new DateTime(endYear, endMonth, endDay);
TimeSpan elapsed = endTime.Subtract(startTime);
startString = startDay.ToString();
elapsedString = elapsed.TotalDays.ToString();
}
通过这个我可以返回两点之间的总天数。但是,elapsed.TotalDays.ToString();
仅返回两点之间的总天数。我想知道的是,是否可以在两点之间每天返回并将其放入列表中?
答案 0 :(得分:3)
您可以使用Enumerable.Range
using System;
using System.Linq;
var totalDays = (int)endTime.Subtract(startTime).TotalDays;
var days = Enumerable.Range(0, totalDays)
.Select(n => startTime.AddDays(n))
.ToList();
开始和结束都包含在days
列表中。首先将范围设置为从零开始,然后单独留下n
。
答案 1 :(得分:3)
我认为您可以使用
进行迭代list<int>Dates = new List<int>();
for(DateTime date = StartDate; date.Date <= EndDate.Date; date = date.AddDays(1))
{
Dates.Add(date.Date);
}
答案 2 :(得分:2)
尝试一下,它应该有效:
int totalDays = endTime.Subtract(startTime).TotalDays as int;
List<DateTime> dates = new List<DateTime>(totalDays + 1); // using this constructor will make filling in the list more performant
dates.Add(startTime); // since you mentionned start and end should be included
for (var i = 1; i < totalDays; i++)
{
dates.Add(startTime.AddDays(i));
}
dates.Add(endTime);