我使用一些代码按月将日期列表转换为不同的部分:
- (NSString *) calculateSectionPeriod{
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth) fromDate: [self userDate]];
NSString *tmp = [NSString stringWithFormat:@"%ld", ([components year] * 1000) + [components month]];
NSLog(@"Section period = %@", tmp);
return tmp;
}
userDate是从NSDatePicker设置的。
在大多数情况下,这会打印出像" 2015006" (2015年6月)或" 2017011" (2017年11月)。但是,在某些情况下,对于我的应用程序的某些用户,它最终会打印" 15003" (最终导致Core Data出现一些问题)。这是来自他们自己的报告,我还没有能够在我自己的设备上重现这个问题,但我很清楚问题出在这个代码上。
'年'组件将打印' 15'而不是' 2015'?是按地区还是某些语言设置?我尝试过设置不同的地区和语言,但我自己无法重现这个问题。