我有两个约会
- 21/01/2011 [来自日期]
- 25/01/2011 [To Date]
醇>
如何使用c#
获取这些范围之间的所有日期答案应该是
21/01/2011
22/01/2011
23/01/2011
24/01/2011
25/01/2011
答案 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));