Моим вопросом является РЕВЕРС типичного, "Как я узнаю, ли 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.
Добавьте 24 часа к дате начала, пока не пройдете дату окончания.
for ( nextDate = startDate ; [nextDate compare:endDate] < 0 ; nextDate = [nextDate addTimeInterval:24*60*60] ) {
// use date
}
Вы можете округлить первое свидание до полудня или полуночи перед запуском цикла, если вам важно время дня.
Используйте экземпляр NSCalendar
, чтобы преобразовать начальный экземпляр NSDate
в экземпляр NSDateComponents
, добавьте 1 день к ] NSDateComponents
и используйте NSCalendar
, чтобы преобразовать его обратно в экземпляр NSDate
. Повторяйте последние два шага, пока не дойдете до даты окончания.