使用Objective-C计算年龄使用Objective-C

问题描述:

我正在使用Xcode创建应用程序,我需要验证用户的年龄。我是一个新手,我有点与Objective-C挣扎。使用Objective-C计算年龄使用Objective-C

我已经使用UITextField以DD/MM/YYYY格式从用户获得输入。我也知道如何使用NSDate获取当前日期并使用NSDateFormatter。当我需要比较两年或两年的日期时,我的问题就出现了。

这是我的代码片段:

NSDate *today = [NSDate date]; 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"dd/MM/yyyy"]; 
NSString *dateString = [dateFormat stringFromDate:today]; 

int PresentYear = (int)[dateString substringToIndex:-4]; 
int InputYear = (int)[DOB.text substringToIndex:-4]; 

if(PresentYear-InputYear<18) 

我似乎无法明确地将其转换为整数。有没有其他方式做到这一点?

在此先感谢!

你已经全部倒退了。

将输入日期转换为NSDate。与[NSDate date]比较。通过询问描述日期之间差异的NSDateComponents的日历*(currentCalendar将完成),这样做最容易。查看year属性。

NSDateFormatter为您提供的内容时,不要编写自己的小字符串解析。

(*)年份并不重要,因为日历都基本同意。但是如果你打算在几个月内获得差异,那么它会 - 例如,中国历法在闰年有13个月。

+0

Got it! :D!谢谢你:) – Su1234 2014-10-08 18:29:54

NSDate *today = [NSDate date]; 
NSCalendar* calendar = [NSCalendar currentCalendar]; 

unsigned units = NSCalendarUnitYear| NSCalendarUnitMonth| NSCalendarUnitDay; 

NSDateComponents* components = [calendar components:units fromDate:today]; 
NSInteger year = [components year]; 

这将从今天获得年。

NSInteger inputYear = [[dateString substringFromIndex:6] integerValue]; 

这将从输入字符串中获得年份。

+0

谢谢你!但是,我的用户输入呢? – Su1234 2014-10-08 18:02:05

+0

use [[dateString substringFromIndex:6] integerValue] – gabbler 2014-10-08 18:06:24