我正在研究一個需要根據生日來查找某人年齡的應用程序。我有一個簡單的NSDate
但我怎麼會發現這與NSDateFormatter
?如何從NSDate計算年齡
-1
A
回答
24
- (NSInteger)ageFromBirthday:(NSDate *)birthdate {
NSDate *today = [NSDate date];
NSDateComponents *ageComponents = [[NSCalendar currentCalendar]
components:NSCalendarUnitYear
fromDate:birthdate
toDate:today
options:0];
return ageComponents.year;
}
NSDateFormatter
用於格式化日期(duh!)。根據經驗,無論何時需要在NSDate
上執行一些計算,都可以使用NSCalendar
和關聯的類,如NSDateComponents
。
+0
謝謝!有效! –
2
NSYearCalendarUnit已被棄用。它是由NSCalendarUnitYear
- (NSString *) ageFromBirthDate:(NSString *)birthDate{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSDate *myDate = [dateFormatter dateFromString: birthDate];
return [NSString stringWithFormat:@"%d ans", [[[NSCalendar currentCalendar] components:NSCalendarUnitYear fromDate:myDate toDate:[NSDate date] options:0] year]];
}
0
代替我發現了一個較短的方式做你正在嘗試完成,如果你只是想知道一個人有多老。
- (NSInteger)ageFromBirthday:(NSDate *)birthdate {
NSDate *today = [NSDate date];
NSInteger ageOfPerson = today.year - birthdate.year;
return ageofPerson;
}
0
檢查這一點,我用 「(NSDateComponents *)成分:(NSCalendarUnit)unitFlags FROM日期:(NSDate的*)STARTINGDATE TODATE:(NSDate的*)resultDate選項:(NSCalendarOptions)選擇採用」 和補充本地化
- (NSString *) calculateAgeWith :(NSDate *)dateOfBirth {
// if years == 0, dispaly months and days
// if years > 0, display years and months
NSDate *now = [NSDate date];
unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
NSDateComponents* diff = [[NSCalendar currentCalendar] components:unitFlags fromDate:dateOfBirth toDate:now options:0];
NSInteger months = diff.month ;
NSInteger days = diff.day ;
NSInteger years = diff.year ;
if (years == 0 && months == 0) {
if (days == 1) {
return [NSString stringWithFormat:@"%d %@", days, NSLocalizedString(@"day", @"")];
} else {
return [NSString stringWithFormat:@"%d %@", days,NSLocalizedString(@"days", @"")];
}
} else if (years == 0) {
if (months == 1) {
if (days == 0) {
return [NSString stringWithFormat:@"1 %@%@",NSLocalizedString(@"and", @""), NSLocalizedString(@"month", @"")];
} else {
return [NSString stringWithFormat:@"1 %@ %d %@",NSLocalizedString(@"month", @""),days,NSLocalizedString(@"days", @"")];
}
} else {
if (days == 0) {
return [NSString stringWithFormat:@"%d %@", months,NSLocalizedString(@"months", @"")];
}
else {
return [NSString stringWithFormat:@"%d %@ %@%d %@", months,NSLocalizedString(@"months", @""),NSLocalizedString(@"and", @""),days,NSLocalizedString(@"days", @"")];
}
}
} else if ((years != 0) && (months == 0)) {
if (years == 1) {
return [NSString stringWithFormat:@"%d %@", years,NSLocalizedString(@"year", @"")];
} else {
return [NSString stringWithFormat:@"%d %@", years,NSLocalizedString(@"years", @"")];
}
} else {
if ((years == 1) && (months == 1)) {
return [NSString stringWithFormat:@"%@ %@%@",NSLocalizedString(@"one year", @""),NSLocalizedString(@"and", @""),NSLocalizedString(@"one month", @"")];
} else if (years == 1) {
return [NSString stringWithFormat:@"%@ %@%d %@", NSLocalizedString(@"one year", @""),NSLocalizedString(@"and", @""), months,NSLocalizedString(@"months", @"")];
} else if (months == 1) {
return [NSString stringWithFormat:@"%d %@ %@%@", years,NSLocalizedString(@"years", @""),NSLocalizedString(@"and", @""),NSLocalizedString(@"one month", @"")];
} else {
return [NSString stringWithFormat:@"%d %@ %@%d %@", years,NSLocalizedString(@"years", @""),NSLocalizedString(@"and", @""), months,NSLocalizedString(@"months", @"")];
}
}
}
的
相關問題
- 1. 計算年齡
- 2. 年齡計算
- 3. 計算年齡
- 4. 如何從日期計算年齡
- 5. 如何從D.O.B計算年齡?
- 6. 在SQL中計算年齡年齡
- 7. jQuery年齡計算不計算閏年
- 8. 計算年齡Teradara
- 9. 計算年齡JavaScript
- 10. jquery年齡計算
- 11. MYSQL:計算年齡從2年開始
- 12. 年齡計算器不顯示計算的年齡
- 13. Excel - 如何根據「年齡月份」來計算年齡
- 14. 年齡後搜索用戶。如何計算正確的年齡?
- 15. 從之前給出的年齡計算年齡
- 16. 從powerquery中的日期字段計算年齡和年齡桶
- 17. 如何創建一個年齡計算器,以年,日,年來講述年齡?
- 18. 如何計算BigQuery中的年齡?
- 19. 如何計算Oracle SQL中的年齡
- 20. 如何以天和秒計算年齡?
- 21. 如何計算某人的年齡?
- 22. 如何計算ios中的年齡?
- 23. 如何計算查詢中的年齡?
- 24. 計算PHP的年齡5.2
- 25. Rails按月計算年齡
- 26. Flex中的年齡計算
- 27. 函數來計算年齡
- 28. 剪輯:計算年齡
- 29. 以天計算年齡 - Javascript
- 30. 按月計算年齡,天
可能重複[如何基於日期計算年齡(http://stackoverflow.com/questions/4463893/how-to-calculate-the-age-based-on-date) – jww