获取范围之间的日期,C#
问题描述:
我有两个日期获取范围之间的日期,C#
- 21/01/2011 [起始日期]
- 25/01/2011 [结束日期]
如何获得这些范围之间的所有日期使用c#
答案应该是
21/01/2011
22/01/2011
23/01/2011 24/01/2011
25/01/2011
答
var allDates = Enumerable.Range(0, int.MaxValue)
.Select(x => fromDate.Date.AddDays(x))
.TakeWhile(x => x <= toDate.Date);
答
var dateArr = new List<DateTime>();
for (var date = startDate; date <= endDate; date = date.AddDays(1)) {
dateArr.Add(date);
}
现在dateArr包含你需要的日期。
答
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);
}
}
应该做的工作
[编辑]增加了.Date
以 “圆” 的日期midnigth
答
如何:
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();
答
我不知道,如果我们有什么可以做到这一点在框架内置,但你可以试试这个:
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);
}
答
if (toDate < fromDate)
return;
var days = (new DateTime[(toDate - fromDate).Days + 1).
Select((x, i) => fromDate.AddDays(i));
+1:在Linq看起来很漂亮:o) – 2011-02-17 11:03:41