2009-11-13 10 views
15

Une question apparemment simple ... comment puis-je retourner une liste de jours pour un mois spécifié?Obtenir tous les jours de tous les mois avec objectif-c

NSDate *today = [NSDate date]; //Get a date object for today's date 
NSCalendar *c = [NSCalendar currentCalendar]; 
NSRange days = [c rangeOfUnit:NSDayCalendarUnit 
         inUnit:NSMonthCalendarUnit 
         forDate:today]; 

Je veux essentiellement utiliser, mais remplacer today par exemple, le mois de Janvier, donc je peux retourner tous ces jours

Répondre

60

La réponse de Carl fonctionne sur Mac. Les travaux suivants sur Mac ou iPhone (pas dateWithNaturalLanguageString: disponible là).

NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDateComponents *components = [[[NSDateComponents alloc] init] autorelease]; 

// Set your year and month here 
[components setYear:2015]; 
[components setMonth:1]; 

NSDate *date = [calendar dateFromComponents:components]; 
NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date]; 

NSLog(@"%d", (int)range.length); 
+0

Je vais donner un +1 à cela. =) –

+0

Merci. L'affiche originale n'a pas précisé, donc je n'étais pas sûr. – nall

+0

ouais ... mon mauvais. J'aurais dû spécifier :( – rson

2

Vous pouvez faire votre jour avec à peu près toute chaîne:

NSDate *date = [NSDate dateWithNaturalLanguageString:@"January"]; 

Ensuite, le reste de votre code fonctionnera tel quel pour vous donner le NSRange pour le nombre de jours en janvier.