2014-08-27 56 views
-1

返回回历历年我有一个iOS应用和它的iOS高达7做工精细iOS应用中的iOS 8

我生成列表车型年从1970年到当前年份。继承人的代码

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:[NSDate date]]; 

NSInteger currentYear = [components year]; 
DLog(@"current year = %ld", (long)currentYear) 

for (NSInteger yearStart = (currentYear + 1); yearStart >= kHJVehicleStartingModelYear ; yearStart--) { 
    [self.carModels addObject:[NSString stringWithFormat:@"%ld", (long)yearStart]]; 
} 

的问题是,在iOS的8运行取决于区域设置,当它返回回历的当年。例如它将返回1435而不是2014.并且循环不执行以生成模型列表。

如何在iOS 8中获取公历当年?

回答

0

您刚才创建的NSCalendar实例与NSGregorianCalendar类型:

NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *components = [gregorianCalendar components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:[NSDate date]]; 
+0

我想高达IOS版本7默认[NSCalendar currentCalendar]将返回NSGregorianCalendar。但是从iOS 8开始,它取决于语言环境设置。 – 2014-08-27 14:31:47

+0

否['NSCalendar currentCalendar]'将在iOS 7及更低版本的区域设置中返回所选日历。 – rckoenes 2014-08-27 15:11:30