Visual C#,两个日期之间的日期数组
Visual C#, An array of Dates between two Dates
我有 2 个 DateTimePicker
控件,名称为 dtp1
和 dtp2
。我希望得到这两天之间的日期数组:dtp1.Date.Value <= x <= dtp2.Date.Value.
我目前使用for
循环来完成这样的任务,但这不是一种非常有效的做事方式:
int c = (int)(dtp2.Value.Date-dtp1.Value.Date).TotalDays + 1;
DateTime[] d = new DateTime[c];
for (int i = 0; i < c; i++)
{
d[i] = dtp1.Value.Date.AddDays(i);
}
有没有更好更简洁的方法达到同样的效果?
我建议你使用列表而不是数组,你可以使用 Enumarable.Range
var startDate = new DateTime(2013, 1, 25);
var endDate = new DateTime(2013, 1, 31);
int days = (endDate - startDate).Days + 1; // incl. endDate
List<DateTime> range = Enumerable.Range(0, days)
.Select(i => startDate.AddDays(i))
.ToList();
您可以了解有关列表的更多信息here
我有 2 个 DateTimePicker
控件,名称为 dtp1
和 dtp2
。我希望得到这两天之间的日期数组:dtp1.Date.Value <= x <= dtp2.Date.Value.
我目前使用for
循环来完成这样的任务,但这不是一种非常有效的做事方式:
int c = (int)(dtp2.Value.Date-dtp1.Value.Date).TotalDays + 1;
DateTime[] d = new DateTime[c];
for (int i = 0; i < c; i++)
{
d[i] = dtp1.Value.Date.AddDays(i);
}
有没有更好更简洁的方法达到同样的效果?
我建议你使用列表而不是数组,你可以使用 Enumarable.Range
var startDate = new DateTime(2013, 1, 25);
var endDate = new DateTime(2013, 1, 31);
int days = (endDate - startDate).Days + 1; // incl. endDate
List<DateTime> range = Enumerable.Range(0, days)
.Select(i => startDate.AddDays(i))
.ToList();
您可以了解有关列表的更多信息here