我想在两个日期之间取几个月和几年的名字.假设我的开始日期是01-23-2010,结束日期是02-25-2011,因此我想获得相关年份的月份列表,例如2010年1月,2010年2月----- 2011年2月.
Dav*_*ong 10
这是关于我如何做的(警告:在浏览器中输入,yadda yadda):
NSDate *startDate = ...; // your start date
NSDate *endDate = ...; // your end date
NSDateComponents *monthDifference = [[NSDateComponents alloc] init];
NSMutableArray *dates = [NSMutableArray arrayWithObject:startDate];
NSUInteger monthOffset = 0;
NSDate *nextDate = startDate;
do {
[dates addObject:nextDate];
[monthDifference setMonth:monthOffset++];
NSDate *d = [[NSCalendar currentCalendar] dateByAddingComponents:monthDifference toDate:startDate options:0];
nextDate = d;
} while([nextDate compare:endDate] == NSOrderedAscending);
Run Code Online (Sandbox Code Playgroud)
这应该为您提供一系列NSDate对象,这些对象表示相隔约一个月发生的日期,从您的开始日期开始到结束日期或结束日期结束.
如果您想以可读的方式显示它们,您将使用NSDateFormatter:
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"MMMM yyyy"];
for (NSDate *date in dates) {
NSLog(@"%@", [f stringFromDate:date]);
}
[f release];
Run Code Online (Sandbox Code Playgroud)
当我在计算机上运行时,我得到:
EmptyFoundation[3327:a0f] January 2010
EmptyFoundation[3327:a0f] February 2010
EmptyFoundation[3327:a0f] March 2010
EmptyFoundation[3327:a0f] April 2010
EmptyFoundation[3327:a0f] May 2010
EmptyFoundation[3327:a0f] June 2010
EmptyFoundation[3327:a0f] July 2010
EmptyFoundation[3327:a0f] August 2010
EmptyFoundation[3327:a0f] September 2010
EmptyFoundation[3327:a0f] October 2010
EmptyFoundation[3327:a0f] November 2010
EmptyFoundation[3327:a0f] December 2010
EmptyFoundation[3327:a0f] January 2011
EmptyFoundation[3327:a0f] February 2011
Run Code Online (Sandbox Code Playgroud)
这可能看起来有点复杂,但它有几个优点:
[NSCalendar currentCalendar]通话更改为不同的日历,它就可以在那个日历中工作(希伯来语,伊斯兰语等)| 归档时间: |
|
| 查看次数: |
3308 次 |
| 最近记录: |