這與Alex的答案,但它看起來像他只得到天從本月開始到哪一天這是今天。這裏是你如何能在本月拿到所有的日子:
NSDate *today = [NSDate date];
NSCalendar *cal = [NSCalendar currentCalendar];
NSMutableArray *datesThisMonth = [NSMutableArray array];
NSRange rangeOfDaysThisMonth = [cal rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:today];
NSDateComponents *components = [cal components:(NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit | NSEraCalendarUnit) fromDate:today];
[components setHour:0];
[components setMinute:0];
[components setSecond:0];
for (NSInteger i = rangeOfDaysThisMonth.location; i < NSMaxRange(rangeOfDaysThisMonth); ++i) {
[components setDay:i];
NSDate *dayInMonth = [cal dateFromComponents:components];
[datesThisMonth addObject:dayInMonth];
}
這將留下與NSDates
的NSArray
,並在當月每天一個日期。
如果你想這是「11天以前」的日期,你可以做到這一點很容易得:
NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *today = [NSDate date];
NSDateComponents *diff = [[NSDateComponents alloc] init];
[diff setDay:-17];
NSDate *seventeenDaysAgo = [cal dateByAddingComponents:diff toDate:today];
一旦你有一個NSDate
,這是很簡單的把它變成一串:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSDate *date = ...;
NSString *string = [formatter stringFromDate:date];
是的!謝謝,這正是我一直在尋找的! – user1096112 2011-12-14 11:29:29
@ user1096112不錯:)你可以把它標記爲接受嗎? – 2011-12-14 11:43:18