如何在iOS中进行年龄验证?
已经创建了下面的年龄验证功能,但它并没有给我正确的答案。有人知道怎么做吗 其他一些代码也尝试过,但都被删除了。我的应用目标是iOS 7及更高版本 选定日期-1990年3月13日输出 你活了-68岁零-35天如何在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
我觉得你的代码很完美 在我看来,问题在于您的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年