Получите весь NSDates МЕЖДУ startDate и endDate

Моим вопросом является РЕВЕРС типичного, "Как я узнаю, ли NSDate между startDate и endDate?"

То, что я хочу сделать, является находкой ВЕСЬ NSDATES (ко дню, не часу или минуте), которые происходят МЕЖДУ startDate и endDate. Включительно тех дат было бы предпочтительно, хотя не необходимый.

Пример: (Я знаю, что они не представляют NSDates, это только для иллюстрации),

ВХОД: startDate = 23.06.10 20:11:30 endDate = 27.06.10 2:15:00

ВЫВОД: NSArray: 23.06.10, 24.06.10, 25.06.10, 26.06.10, 27.06.10

Я не возражаю делать работу. Это просто, что я не знаю, где запустить с точки зрения создания эффективного кода, не имея необходимость постепенно ступать через NSDates.

6
задан Daniel Amitay 26 June 2010 в 18:30
поделиться

2 ответа

Добавьте 24 часа к дате начала, пока не пройдете дату окончания.

for ( nextDate = startDate ; [nextDate compare:endDate] < 0 ; nextDate = [nextDate addTimeInterval:24*60*60] ) {
  // use date
}

Вы можете округлить первое свидание до полудня или полуночи перед запуском цикла, если вам важно время дня.

5
ответ дан 8 December 2019 в 14:40
поделиться

Используйте экземпляр NSCalendar , чтобы преобразовать начальный экземпляр NSDate в экземпляр NSDateComponents , добавьте 1 день к ] NSDateComponents и используйте NSCalendar , чтобы преобразовать его обратно в экземпляр NSDate . Повторяйте последние два шага, пока не дойдете до даты окончания.

9
ответ дан 8 December 2019 в 14:40
поделиться