Créer un NSMutableArray en utilisant NSCalendar
-
27-09-2019 - |
Question
J'ai le problème suivant:. Je dois créer un NSMutabeArray avec tous les jours après une date spécifique
Cela devrait ressembler à:
- Jeudi 28 octobre 2010
- jeudi 04 octobre 2010
- Jeudi 11 octobre 2010
- ...
Comment puis-je faire cela? Je pense qu'il a quelque chose à voir avec NSCalendar, mais je ne peux pas trouver la bonne solution ... Pourriez-vous me aider?
Merci d'avance
FFraenz
La solution
C'est une série infinie; un NSMutableArray ne peut contenir une collection finie.
En tout cas, vous avez besoin que d'un seul membre de la série, tels que 2010-10-28. Pour obtenir le jeudi après cela, ajoutez une semaine. Pour obtenir la troisième date dans la série, ajoutez une semaine à la deuxième date, ou deux semaines à la première date. Avoir un membre de la série vous donne accès à tout autre membre de la série.
Si vous commencez à une date qui n'est pas le jour de la semaine à droite, obtenir les composants de date pour cette date, ajoutez la différence entre le jour de la semaine correcte et le jour de la semaine, il a à son jour du mois, et convertir la date modifiée composants dos à une date. Cette date sera alors le jour désiré dans la même semaine.
Autres conseils
Pour avoir la date réelle:
NSDate *today = [[NSDate alloc] init];
Pour ajouter une semaine:
NSDate *nextDate = [today dateByAddingTimeInterval:60*60*24*7];
Ensuite, vous pouvez itérer et créer votre tableau:
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];