如何以特定格式获得一年中的所有月份

iPh*_*e 7 3 nsdate nsdateformatter ios

如何以一种特殊格式"2013年1月"等表格视图获取一年中的所有月份.我也需要设置起始月份.以下是我试过的代码.

int mCurrentMonth = [dateComponents month];
int mCurrentYear = [dateComponents year];

NSString * dateString = [NSString stringWithFormat: @"%d",mCurrentMonth];

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM"];
NSDate* myDate = [dateFormatter dateFromString:dateString];

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMMM"];
NSString *stringFromDate = [formatter stringFromDate:myDate];
NSString *mon = [NSString stringWithFormat:@"%@ %d",stringFromDate, mCurrentYear];
NSLog(@"month:%@", mon);
Run Code Online (Sandbox Code Playgroud)

上面的代码只给出了我当前所需格式的月份.我试过的其他方式就是这个

NSDateFormatter *df = [[NSDateFormatter alloc] init];

for (int i = 0; i < 12; i++){
    NSString *monthName = [[df monthSymbols] objectAtIndex:i];
    NSLog(@"months name:%@", monthName);
}
Run Code Online (Sandbox Code Playgroud)

这样,我得到所有月份的名字,但不是一年.我没有得到如何实现2013年2月2013年等所需的输出.

Mah*_*esh 7

试试这个 :

  NSDateFormatter  *dateFormatter   = [[NSDateFormatter alloc] init];

    NSDate           *today           = [NSDate date];
    NSCalendar       *currentCalendar = [NSCalendar currentCalendar];
    NSDateComponents *yearComponents  = [currentCalendar components:NSYearCalendarUnit  fromDate:today];
    int currentYear  = [yearComponents year];
    for(int months = 0; months < 12; months++)
        NSLog(@"%@ %i",[[dateFormatter monthSymbols]objectAtIndex: months],currentYear);
Run Code Online (Sandbox Code Playgroud)

输出将是:

2013年1月

2013年2月

2013年3月

2013年4月

2013年5月

2013年六月

2013年7月

2013年8月

2013年九月

2013年10月

2013年11月

2013年12月

已编辑:For当前月份的上方输出使用以下代码:

 NSDateFormatter  *dateFormatter   = [[NSDateFormatter alloc] init];

    NSDate           *today           = [NSDate date];
    NSCalendar       *currentCalendar = [NSCalendar currentCalendar];
    NSDateComponents *yearComponents  = [currentCalendar components:NSYearCalendarUnit |    NSMonthCalendarUnit  fromDate:today];
    int currentYear  = [yearComponents year];
    int currentmonth=[yearComponents month];
    NSLog(@"current Month %d",currentmonth);
    for(int months = currentmonth - 1; months < 12; months++)
        NSLog(@"%@ %i",[[dateFormatter monthSymbols]objectAtIndex: months],currentYear);
Run Code Online (Sandbox Code Playgroud)


Abh*_*ain 6

斯威夫特 4.2

let dateFormatter = DateFormatter()
let today = Date()
let currentCalendar = Calendar.current
var yearComponents: DateComponents? = currentCalendar.dateComponents([.year], from: today)
let currentYear = Int(yearComponents!.year!)
for months in 0..<12 {
    print("\(dateFormatter.shortMonthSymbols[months]) \(currentYear)")
}
Run Code Online (Sandbox Code Playgroud)

输出:

Jan 2017
Feb 2017
Mar 2017
Apr 2017
May 2017
Jun 2017
Jul 2017
Aug 2017
Sep 2017
Oct 2017
Nov 2017
Dec 2017
Run Code Online (Sandbox Code Playgroud)