Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iOS中进行年龄验证?_Ios_Objective C_Nsdate - Fatal编程技术网

如何在iOS中进行年龄验证?

如何在iOS中进行年龄验证?,ios,objective-c,nsdate,Ios,Objective C,Nsdate,已经创建了下面的年龄验证功能,但它并没有给我正确的答案。有人知道怎么做吗 其他一些代码也尝试过,但都被删除了。我的应用目标是iOS 7及更高版本 选定日期-1990年3月13日输出 你活了-68岁零-35天 我觉得你的代码很完美 在我看来,问题在于您的xtbirthdate.text格式。它应该在yyyy-MM-dd中 我用静态字符串值代替xtbirthdate.text运行代码,得到了完美的结果。检查以下代码以供参考 NSString *birthDate = @"1990/03/15"; N

已经创建了下面的年龄验证功能,但它并没有给我正确的答案。有人知道怎么做吗

其他一些代码也尝试过,但都被删除了。我的应用目标是iOS 7及更高版本

选定日期-1990年3月13日输出

你活了-68岁零-35天


我觉得你的代码很完美

在我看来,问题在于您的xtbirthdate.text格式。它应该在yyyy-MM-dd中

我用静态字符串值代替xtbirthdate.text运行代码,得到了完美的结果。检查以下代码以供参考

NSString *birthDate = @"1990/03/15";
NSDate *todayDate = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy/MM/dd"];
int time = [todayDate timeIntervalSinceDate:[dateFormatter dateFromString:birthDate]];

int allDays = (((time/60)/60)/24);
int days = allDays%365;
int years = (allDays-days)/365;

NSLog(@"You live since %i years and %i days",years,days);
输出:

- You live since 25 years and 280 days

我觉得你的代码很完美

在我看来,问题在于您的xtbirthdate.text格式。它应该在yyyy-MM-dd中

我用静态字符串值代替xtbirthdate.text运行代码,得到了完美的结果。检查以下代码以供参考

NSString *birthDate = @"1990/03/15";
NSDate *todayDate = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy/MM/dd"];
int time = [todayDate timeIntervalSinceDate:[dateFormatter dateFromString:birthDate]];

int allDays = (((time/60)/60)/24);
int days = allDays%365;
int years = (allDays-days)/365;

NSLog(@"You live since %i years and %i days",years,days);
输出:

- You live since 25 years and 280 days

您应该使用
NSCalendar
API获取特定日期之间的日期组件数

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitYear | NSCalendarUnitDay fromDate:birthDate toDay:[NSDate date] options:0];
NSLog(@"You live since %i years and %i days", components.year, components.day);

你们不能依赖于一年有365天的假设(考虑闰年)。此外,一天的持续时间并不总是24小时(考虑DST的变化)。这可能会给你的计算带来误差
NSCalendar
正确处理所有这些内容。

您应该使用
NSCalendar
API获取特定日期之间的日期组件数量

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitYear | NSCalendarUnitDay fromDate:birthDate toDay:[NSDate date] options:0];
NSLog(@"You live since %i years and %i days", components.year, components.day);

你们不能依赖于一年有365天的假设(考虑闰年)。此外,一天的持续时间并不总是24小时(考虑DST的变化)。这可能会给你的计算带来误差
NSCalendar
正确处理所有这些内容。

你没有考虑闰年是你的出生日期。文本是“yyyy-MM-dd”格式的?也许你的
日期格式化程序和
出生日期是不同的格式,你必须把它放在相同的格式上(比如1990/01/01和yyy/MM/dd),否则你的代码对我来说很好,25年你没有考虑闰年是你的出生日期。文本是“yyyy-MM-dd”格式的?也许你的
日期格式化程序和
出生日期是不同的格式,你必须把它放在相同的格式上(比如1990/01/01和yyy/MM/dd),否则你的代码对我来说很好,它放25年