我使用下面的代码来获取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"