Obj-C-在word和int中获取NSDate月份组件



我使用下面的代码来获取NSDate的组件,它返回以下数据:

"<NSDateComponents: 0x282564be0> {n    Calendar Year: 2020n    Month: 10n    Leap Month: 0n    Day: 1",
"<NSDateComponents: 0x282561120> {n    Calendar Year: 2020n    Month: 10n    Leap Month: 0n    Day: 2",
"<NSDateComponents: 0x282561180> {n    Calendar Year: 2020n    Month: 10n    Leap Month: 0n    Day: 3",
"<NSDateComponents: 0x2825611a0> {n    Calendar Year: 2020n    Month: 10n    Leap Month: 0n    Day: 4",
"<NSDateComponents: 0x282564bd0> {n    Calendar Year: 2020n    Month: 10n    Leap Month: 0n    Day: 5",
"<NSDateComponents: 0x282561310> {n    Calendar Year: 2020n    Month: 10n    Leap Month: 0n    Day: 6",
"<NSDateComponents: 0x282561530> {n    Calendar Year: 2020n    Month: 10n    Leap Month: 0n    Day: 7"

是否可以将"month"对象返回为三个字母的月份,而不是实际的月份编号?把十月改为十月?我可以将日期格式化程序放在返回到数组的日期上,但我不确定如何将其应用于组件?

ViewController.m

NSDate *today = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSCalendar *calendar = [NSCalendar currentCalendar];

dateFormatter.dateFormat = @"ddMMM";
for (UInt16 i = 0; i < 7; i++) {

NSDate *nextDate = [calendar dateByAddingUnit:NSCalendarUnitDay value:i toDate:today options: 0];

[_weekdates addObject:[dateFormatter stringFromDate: nextDate]];

NSDateComponents* components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:nextDate]; // Get necessary date components

[components month];
NSLog(@"%@", components); 
}

[dateFormatter shortMonthSymbols]返回类似于Jan,Feb,Mar....的短月份数组,使用它可以获得三个月的字母。

NSLog(@"%@", [dateFormatter shortMonthSymbols][components.month-1]);

[components.month]返回从1到12的月份编号。

- (NSString *)getMonthFromDate:(NSDate *)date {
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSDateComponents* components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:date];
NSString *strMonthName = [dateFormatter shortMonthSymbols][components.month-1];
NSLog(@"%@", strMonthName);
return strMonthName;
}

一个包含月份值并按月份号访问它的简单数组就可以了。

months = [NSArray arrayWithObjects: @"Jan", @"Feb", nil];  
[months objectAtIndex: i]=> i=0=> "Jan"

最新更新