2009-11-13 26 views
15

Una pregunta aparentemente simple ... ¿cómo puedo devolver una lista de días para un mes específico?Obtenga todos los días de cualquier mes con objetivo-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]; 

Básicamente quiero usar eso, pero reemplazar today con, por ejemplo, el mes de enero, por lo que puede devolver todos esos días

Respuesta

60

La respuesta de Carl funciona en Mac. Lo siguiente funciona en Mac o iPhone (no hay dateWithNaturalLanguageString: disponible allí).

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

Daré un +1 a eso. =) –

+0

Gracias. El cartel original no especificaba, así que no estaba seguro. – nall

+0

sí ... mi mal. Debería haber especificado :( – rson

2

Puede hacer que su día con casi cualquier cadena:

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

Luego, el resto de su código funcionará como está para devolverle el NSRange por el número de días de enero.

Cuestiones relacionadas