我正在使用 asp:Calander,并且我有一个具有开始日期和结束日期的对象。我需要获取这两个日期之间的所有日期并将它们放在一个数组中,这样我就可以使用不同的 CSS 在日历上呈现相应的日期
Justin
问问题
1134 次
4 回答
2
DateTime startDate;
DateTime endDate;
DateTime currentDate = startDate;
List<DateTime> dates = new List<DateTime> ();
while (true)
{
dates.Add (currentDate);
if (currentDate.Equals (endDate)) break;
currentDate = currentDate.AddDays (1);
}
它假定 startDate < 比 endDate,您在“日期”列表中获得结果
于 2008-10-02T16:29:43.047 回答
2
IEnumerable<DateTime> RangeDays(DateTime RangeStart, DateTime RangeEnd) {
DateTime EndDate = RangeEnd.Date;
for (DateTime WorkDate = RangeStart.Date; WorkDate <= EndDate; WorkDate = WorkDate.AddDays(1)) {
yield return WorkDate;
}
yield break;
}
未经测试的代码......但应该可以工作。
于 2008-10-02T16:38:14.617 回答
1
我投了 AlbertEin 的票,因为他给出了一个很好的答案,但你真的需要一个收藏来保存所有的日期吗?当您渲染一天时,您不能只检查日期是否在指定范围内,然后以不同的方式渲染它,不需要集合。这里有一些代码来演示
DateTime RangeStartDate,RangeEndDate; //Init as necessary
DateTime CalendarStartDate,CalendarEndDate; //Init as necessary
DateTime CurrentDate = CalendarStartDate;
String CSSClass;
while (CurrentDate != CalendarEndDate)
{
if(CurrentDate >= RangeStartDate && CurrentDate <= RangeEndDate)
{
CSSClass= "InRange";
}
else
{
CSSClass = "OutOfRange";
}
//Code For rendering calendar goes here
currentDate = currentDate.AddDays (1);
}
于 2008-10-02T16:37:25.383 回答
1
// inclusive
var allDates = Enumerable.Range(0, (endDate - startDate).Days + 1).Select(i => startDate.AddDays(i));
// exclusive
var allDates = Enumerable.Range(1, (endDate - startDate).Days).Select(i => startDate.AddDays(i));
于 2008-10-02T16:56:22.653 回答