Лучший способ получить все даты между DateA и DateB - PullRequest
1 голос
/ 02 октября 2008

Я использую asp: Calander, и у меня есть объект с начальной и конечной датой. Мне нужно получить все даты между этими двумя датами и поместить их в массив, чтобы я мог затем отобразить соответствующие даты в каландре с другим CSS

Ответы [ 4 ]

2 голосов
/ 02 октября 2008
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;
}

Непроверенный код ... но должен работать.

2 голосов
/ 02 октября 2008
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

1 голос
/ 02 октября 2008
// 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));
1 голос
/ 02 октября 2008

Я проголосовал за Альберта Эйна, потому что он дал хороший ответ, но вам действительно нужна коллекция, чтобы хранить все даты? Когда вы отображаете день, вы не можете просто проверить, находится ли дата в указанном диапазоне, а затем отобразить ее по-другому, не нужно собирать данные. Вот код для демонстрации

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...