我正在尝试编写我的第一个 iPhone 应用程序,并且我正在使用一个日期选择器对象让用户输入他们的出生日期。我的应用程序的一部分需要 int 格式的年份。我已经添加了如下代码。奇怪的是 'month' 得到了正确的值。但是日期和年份似乎都停留在 MAX_INT (2147483647)。谁能告诉我我做错了什么?

-(IBAction)dateOfBirthChanged:(id)sender {
    NSCalendar* calender = [NSCalendar currentCalendar];
    NSDateComponents* dateComponents = [calender components:NSMonthCalendarUnit fromDate:[datepicker date]];
    NSInteger day = [dateComponents day];
    NSInteger month = [dateComponents month];
    NSInteger year = [dateComponents year];
    label.text = [NSString stringWithFormat:@"Your year of birth is %d", year];
}

最佳答案

试试这个:

NSDateComponents *dateComponents = [calender components:(NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit) fromDate:[datepicker date]];

引用:-components:fromDate:

10-08 05:31