2009-11-13 19 views
15

Una domanda apparentemente semplice ... come posso restituire un elenco di giorni per un mese specifico?Ottenere tutti i giorni di qualsiasi mese con l'obiettivo-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]; 

Io fondamentalmente desidera utilizzare questo, ma sostituire today con dire, il mese di gennaio, quindi posso restituire tutti quei giorni

risposta

60

La risposta di Carl funziona su Mac. I seguenti lavori su Mac o iPhone (no dateWithNaturalLanguageString: disponibili 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

Darò un +1 a quello. =) –

+0

Grazie. Il poster originale non ha specificato, quindi non ero sicuro. – nall

+0

sì ... mio male. Avrei dovuto specificare :( – rson

2

possibile rendere il vostro appuntamento con praticamente qualsiasi stringa:

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

Quindi il resto del codice funzionerà così com'è per restituire lo NSRange per il numero di giorni di gennaio.

Problemi correlati