Создайте NSMutableArray с помощью NSCalendar.
-
27-09-2019 - |
Вопрос
У меня следующая проблема:Мне нужно создать NSmutabeArray для каждого дня недели после определенной даты.
Это должно выглядеть так:
- Четверг, 28 октября 2010 г.
- Четверг, 4 октября 2010 г.
- Четверг, 11 октября 2010 г.
- ...
Как мне это сделать?Я думаю, что это как-то связано с NSCalendar, но я не могу найти правильное решение...Не могли бы вы помочь мне?
заранее спасибо
ФФраенц
Решение
Это бесконечная серия;NSmutableArray может содержать только конечную коллекцию.
В любом случае вам нужен только один член серии, например 2010-10-28.Чтобы получить четверг после этого, добавьте одну неделю.Чтобы получить третью дату в серии, добавьте неделю ко второй дате или две недели к первой дате.Наличие любого члена серии дает вам доступ к любому другому члену серии.
Если вы начинаете с даты, которая не является подходящим днем недели, получите компоненты даты для этой даты, добавьте разницу между правильным днем недели и днем недели, который у нее есть, к ее дню месяца и преобразуйте измененные компоненты даты обратно в свидание.Тогда эта дата будет приходиться на желаемый день недели на той же неделе.
Другие советы
Чтобы иметь фактическую дату:
NSDate *today = [[NSDate alloc] init];
Чтобы добавить неделю:
NSDate *nextDate = [today dateByAddingTimeInterval:60*60*24*7];
Затем вы можете перебрать и создать свой массив:
NSMutableArray* dates = [[NSMutableArray alloc] init];
NSDate *date= [[NSDate alloc] init];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
[offsetComponents setWeek:1];
for (int i=0;i<10;i++) {
NSDate *nextDate = [gregorian dateByAddingComponents:offsetComponents toDate:date options:0];
[dates addObject:date];
[date release];
date = nextDate;
}
[date release];