2009-11-13 15 views
15

Z pozoru proste pytanie ... jak mogę zwrócić listę dni dla dowolnego określonego miesiąca?Uzyskaj wszystkie dni w dowolnym miesiącu z celem-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]; 

Zasadniczo chcę użyć, ale zastąpić today z powiedzmy, styczniu, więc mogę wrócić wszystkich tych dni

Odpowiedz

60

Odpowiedź Carl'a działa na komputerze Mac. Poniższe działa na Macu lub iPhonie (nie ma tam dostępnego dateWithNaturalLanguageString:).

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

Dam temu +1. =) –

+0

Dzięki. Oryginalny plakat nie określał, więc nie byłem pewien. – nall

+0

tak ... moje złe. Powinien być określony :( – rson

2

można dokonać datę z prawie dowolny ciąg:

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

Następnie reszta kodu będzie działać tak, jak jest, aby oddać Ci numer NSRange dla liczby dni w styczniu.

Powiązane problemy