2010-10-28 2 views
0

У меня есть следующая проблема: мне нужно создать NSMutabeArray с каждым будним днем ​​после определенной даты.Создайте NSMutableArray с помощью NSCalendar

Это должно выглядеть следующим образом:

  • Четверг 28 октября 2010
  • четверг 4 октября 2010
  • Четверг 11 октября 2010
  • ...

Как я могу это сделать ? Я думаю, что это имеет какое-то отношение к NSCalendar, но я не могу найти правильное решение ... Не могли бы вы мне помочь?

Спасибо заранее

FFraenz

+0

«каждый будний день» - это бесконечный список! Ваша проблема заключается в создании словаря или даты? –

ответ

0

Это бесконечная серия; NSMutableArray может содержать только конечную коллекцию.

Во всяком случае, вам нужен только один член этой серии, такой как 2010-10-28. Чтобы получить четверг после этого, добавьте одну неделю. Чтобы получить третью дату в серии, добавьте неделю ко второй дате или две недели к первой дате. Наличие любого члена серии предоставляет вам доступ к любому другому члену серии.

Если вы начинаете с даты, которая не является правильной будничной денькой, получите компоненты даты на эту дату, добавьте разницу между правильным днем ​​недели и днем ​​недели, который у нее есть, до своего дня месяца, и конвертируйте измененные компонентов даты до даты. Эта дата будет в желаемый рабочий день недели на той же неделе.

+0

Я сделал это, спасибо. – ffraenz

0

Чтобы иметь фактическую дату:

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]; 
+0

Я видел этот пример, но как его использовать для моей проблемы? Я много пробовал с NSDateComponents, но он не вернул правильное решение, как описано выше. Мне нужен NSMutableArray с NSDates (один день недели) между двумя датами. Я не понимаю, как использовать компоненты. Я продолжаю пытаться. Спасибо. – ffraenz

+0

Я изменил свой андер ... –

+0

Benoît: Это предполагает семь дней в неделю. –

Смежные вопросы