wie das Alter zu berechnen, basierend auf dem Geburtsdatum in diesem Format 1976.06.24 mon/Datum/Jahr ...Wie das Alter zu berechnen, basierend auf NSDate
Antwort
Hier ist, wie Sie Ihr tatsächliches Alter basierte berechnen an Ihrem Geburtsdatum in Jahren und Tagen:
NSString *birthDate = @"03/31/1990";
NSDate *todayDate = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd/yyyy"];
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);
Es gibt die Jahre und die genauen Tage zurück. Und wenn Sie brauchen, können Sie den NSDateFormatter und vieles mehr ändern.
+1 für Sie, es hat mir geholfen. Danke ....... – Sabby
Und es gibt keine Schaltjahre, in denen Sie leben? ;) –
Ich lebe auf dem Mars - Neugier hat mich noch nicht entdeckt. Ich kenne die Möglichkeiten von Datumsberechnungen in Objective-C nicht, aber meine Antwort ist eine recht einfache Lösung, aber ich denke, es gibt eine genauere Lösung (auf deinem Planeten) ;-) –
Wenn u wollen allein .use unter einem Alter zu finden, die Schaltjahr Berechnung gehören zu
- (NSInteger)age:(NSDate *)dateOfBirth {
NSCalendar *calendar = [NSCalendar currentCalendar];
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *dateComponentsNow = [calendar components:unitFlags fromDate:[NSDate date]];
NSDateComponents *dateComponentsBirth = [calendar components:unitFlags fromDate:dateOfBirth];
if (([dateComponentsNow month] < [dateComponentsBirth month]) ||
(([dateComponentsNow month] == [dateComponentsBirth month]) && ([dateComponentsNow day] < [dateComponentsBirth day]))) {
return [dateComponentsNow year] - [dateComponentsBirth year] - 1;
} else {
return [dateComponentsNow year] - [dateComponentsBirth year];
}
}
Viele dieser Antworten nicht richtig für Schaltjahre berücksichtigen und solche, am besten ist, anstatt Apples Methoden zu verwenden, durch Konstanten zu dividieren.
Ich denke, das ist sauberer und genauer als alle anderen Antworten hier.
Wow! Gute Antwort ! Dies verdient eine eigene Face Palm: D! – Razvan
große Antwort ... :) –
Das half mir, das Alter als Int. In meinem Fall musste ich auch das Datum aus der Zeichenkette konvertieren, bevor ich folgendes benutze: NSDateFormatter * dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat: @ "MM/TT/JJJJ"]; NSDate * Geburtstag = [dateFormat dateFromString: @ "19.11.1986"]; – Gamerlegend
der einfachste Weg ist die NSCalendar zu verwenden:
NSDate *_dateOfBirth = ...;
NSDateComponent *_diff = [[NSCalendar currentCalendar] components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:_dateOfBirth toDate:[NSDate date] options:0];
NSLog(@"%@", _diff);
Dies ist der Code, den ich von diesem link bekam .. es große Werke .. Out Put wird wie „5 Jahre 6 Monate“ und alle usecases sind darin enthalten.
- (NSString *)age:(NSDate *)dateOfBirth {
NSInteger years;
NSInteger months;
NSInteger days;
NSCalendar *calendar = [NSCalendar currentCalendar];
unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
NSDateComponents *dateComponentsNow = [calendar components:unitFlags fromDate:[NSDate date]];
NSDateComponents *dateComponentsBirth = [calendar components:unitFlags fromDate:dateOfBirth];
if (([dateComponentsNow month] < [dateComponentsBirth month]) ||
(([dateComponentsNow month] == [dateComponentsBirth month]) && ([dateComponentsNow day] < [dateComponentsBirth day]))) {
years = [dateComponentsNow year] - [dateComponentsBirth year] - 1;
} else {
years = [dateComponentsNow year] - [dateComponentsBirth year];
}
if ([dateComponentsNow year] == [dateComponentsBirth year]) {
months = [dateComponentsNow month] - [dateComponentsBirth month];
} else if ([dateComponentsNow year] > [dateComponentsBirth year] && [dateComponentsNow month] > [dateComponentsBirth month]) {
months = [dateComponentsNow month] - [dateComponentsBirth month];
} else if ([dateComponentsNow year] > [dateComponentsBirth year] && [dateComponentsNow month] < [dateComponentsBirth month]) {
months = [dateComponentsNow month] - [dateComponentsBirth month] + 12;
} else {
months = [dateComponentsNow month] - [dateComponentsBirth month];
}
if ([dateComponentsNow year] == [dateComponentsBirth year] && [dateComponentsNow month] == [dateComponentsBirth month]) {
days = [dateComponentsNow day] - [dateComponentsBirth day];
}
if (years == 0 && months == 0) {
if (days == 1) {
return [NSString stringWithFormat:@"%d day", days];
} else {
return [NSString stringWithFormat:@"%d days", days];
}
} else if (years == 0) {
if (months == 1) {
return [NSString stringWithFormat:@"%d month", months];
} else {
return [NSString stringWithFormat:@"%d months", months];
}
} else if ((years != 0) && (months == 0)) {
if (years == 1) {
return [NSString stringWithFormat:@"%d year", years];
} else {
return [NSString stringWithFormat:@"%d years", years];
}
} else {
if ((years == 1) && (months == 1)) {
return [NSString stringWithFormat:@"%d year and %d month", years, months];
} else if (years == 1) {
return [NSString stringWithFormat:@"%d year and %d months", years, months];
} else if (months == 1) {
return [NSString stringWithFormat:@"%d years and %d month", years, months];
} else {
return [NSString stringWithFormat:@"%d years and %d months", years, months];
}
}
}
Wenn Sie Alter wollen wie int folgende Antwort versuchen .., die ich aus folgenden bekam link
- (NSInteger)age:(NSDate *)dateOfBirth {
NSCalendar *calendar = [NSCalendar currentCalendar];
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *dateComponentsNow = [calendar components:unitFlags fromDate:[NSDate date]];
NSDateComponents *dateComponentsBirth = [calendar components:unitFlags fromDate:dateOfBirth];
if (([dateComponentsNow month] < [dateComponentsBirth month]) ||
(([dateComponentsNow month] == [dateComponentsBirth month]) && ([dateComponentsNow day] < [dateComponentsBirth day]))) {
return [dateComponentsNow year] - [dateComponentsBirth year] - 1;
} else {
return [dateComponentsNow year] - [dateComponentsBirth year];
}
}
Hope this jemand hilft ..
Das hat mir geholfen, das Alter als Int. In meinem Fall musste ich auch das Datum von String konvertieren, bevor ich die Funktion NSDateFormatter * dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat: @ "MM/TT/JJJJ"]; NSDate * dob = [DatumFormat DatumFromString: @ "19.11.1986"]; NSLog (@ "ALTER:% d", [Selbstalter: Geburtsdatum]); – Gamerlegend
vollständigste Antwort berechnet auch Monate, danke –
-(NSInteger) ComputeYearMonth
{
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"yyyy-MM-dd"];
NSDate *DateOfBirth=[format dateFromString:[NSString stringWithFormat:@"%@-%@-%@",year,month,day]];
NSDate *currentTime = [NSDate date];
NSLog(@"DateOfBirth======%@",DateOfBirth);
NSInteger years = [[[NSCalendar currentCalendar] components:NSYearCalendarUnit
fromDate:DateOfBirth
toDate:currentTime options:0]year];
NSInteger months = [[[NSCalendar currentCalendar] components:NSMonthCalendarUnit
fromDate:DateOfBirth
toDate:currentTime options:0]month];
NSLog(@"Number of years: %d",years);
NSLog(@"Number of Months: %d,",months);
return years;
// End of Method
}
Kann sein, ich m falsch, aber das ist einfacher, nicht wahr?
NSTimeInterval ageInterval = [birthDate timeIntervalSinceDate:[NSDate date]];
NSInteger age = ABS(ageInterval/(60 * 60 * 24 * 365));
was ist, wenn es ein Schaltjahr ist? – AnthonyLambert
Es ist einfacher, nicht genau :-) – Pedro
Eine einfache rasche Erweiterung verwenden, um das Alter zu erhalten/wie alt ist ein NSDate
extension NSDate {
var age: Int {
let calendar: NSCalendar = NSCalendar.currentCalendar()
let now = calendar.startOfDayForDate(NSDate())
let birthdate = calendar.startOfDayForDate(self)
let components = calendar.components(.Year, fromDate: birthdate, toDate: now, options: [])
return components.year
}
}
Exemple:
NSDate(timeIntervalSince1970:0).age // => 45 (as of nov 2015) Epoch happened 45 year ago !
By the way, sollten Sie vorsichtig sein, das ist die westliche Auffassung des Alters, die Zählung ist in einigen anderen Ländern anders (Korea für Beispiel).
Hier ist eine Funktion Alter (Swift 2,1)
func calculateAge (birthday: NSDate) -> NSInteger {
let calendar : NSCalendar = NSCalendar.currentCalendar()
let unitFlags : NSCalendarUnit = [NSCalendarUnit.Year, NSCalendarUnit.Month, NSCalendarUnit.Day]
let dateComponentNow : NSDateComponents = calendar.components(unitFlags, fromDate: NSDate())
let dateComponentBirth : NSDateComponents = calendar.components(unitFlags, fromDate: birthday)
if ((dateComponentNow.month < dateComponentBirth.month) ||
((dateComponentNow.month == dateComponentBirth.month) && (dateComponentNow.day < dateComponentBirth.day))
)
{
return dateComponentNow.year - dateComponentBirth.year - 1
}
else {
return dateComponentNow.year - dateComponentBirth.year
}
}
let birthday = NSCalendar.currentCalendar().dateWithEra(1, year: 2016, month: 07, day: 25, hour: 8, minute: 53, second: 0, nanosecond: 0)!
func calculateAge(birthday: NSDate) -> String {
func grammaticalString(forUnit unit: String, value: Int) -> String {
if value > 1 {
return "\(value) \(unit)s"
} else {
return "\(value) \(unit)"
}
}
let calendar = NSCalendar.currentCalendar()
let unitFlags: NSCalendarUnit = [NSCalendarUnit.Year, NSCalendarUnit.Month, NSCalendarUnit.Day, NSCalendarUnit.Hour, NSCalendarUnit.Minute]
let ageComponent = calendar.components(unitFlags, fromDate: birthday, toDate: NSDate(), options: [])
let years = ageComponent.year
let months = ageComponent.month
let days = ageComponent.day
let hours = ageComponent.hour
switch (years, months, days, hours) {
case (let y, let m, _, _) where y > 0:
return "\(grammaticalString(forUnit: "Year", value: y)) \(grammaticalString(forUnit: "Month", value: m))"
case (let y, let m, let d, _) where y == 0 && m > 0:
return "\(grammaticalString(forUnit: "Month", value: m)) \(grammaticalString(forUnit: "Day", value: d))"
case (let y, let m, let d, _) where y == 0 && m == 0 && d > 0:
return "\(grammaticalString(forUnit: "Day", value: d))"
case (let y, let m, let d, let h) where y == 0 && m == 0 && d == 0 && h > 0:
return "\(grammaticalString(forUnit: "Hour", value: h))"
case (let y, let m, let d, let h) where y == 0 && m == 0 && d == 0 && h == 0:
if ageComponent.minute > 0 {
return "\(grammaticalString(forUnit: "Minute", value: ageComponent.minute))"
} else {
return "-"
}
default:
return "-"
}
}
// Output will be any of these
// 2 Years 3 Months
// 3 Months 0 Days
// 2 Days
// 3 Hours
// 45 Minutes
// -
Method in Swift 3 und höher Syntax auf cobbal's solution zu berechnen.
func calculateAgeInYearsFromDateOfBirth (birthday: Date) -> Int {
let now = Date()
let calendar = Calendar.current
let ageComponents = calendar.dateComponents([.year], from: birthday, to: now)
let age = ageComponents.year!
return age
}
- 1. Berechne das Alter basierend auf dem Geburtsdatum
- 2. SQLite: Wie Alter von Geburtsdatum zu berechnen
- 3. PHP: Wie Alter in Monaten zu berechnen
- 4. Wie berechnet man ein Alter basierend auf einem Geburtstag?
- 5. Schienen berechnen Alter in Monaten
- 6. berechnen Koordinaten basierend auf Entfernungen
- 7. Berechnen Alter und Alter Buckets aus einem Datumsfeld in PowerQuery
- 8. Datum Unterschied in MySQL, um Alter zu berechnen
- 9. NSDate beim Berechnen des letzten Montag-Datums
- 10. R lubridate, Berechnen Alter einschließlich Schaltjahren
- 11. Was ist der beste Weg, Alter mit Flex zu berechnen?
- 12. Numpy: basierend auf vorherigem Element berechnen?
- 13. Versuchen, Tage basierend auf einem Personenschichtmuster zu berechnen
- 14. Durchschnitt basierend auf nur 1 Zahl berechnen
- 15. Graphenalgorithmus berechnen Knotenwerte basierend auf benachbarten Knoten
- 16. Powershell „Erweitert“ Parsen Komponenten Installationszeit zu berechnen, basierend auf Protokolldatei
- 17. Berechne das Alter ab dem Geburtsdatum
- 18. berechnen neuer Wert basierend auf dem Wert
- 19. Wie berechnet man das Alter anhand einer Parameterfunktion?
- 20. Wie NSString zu NSDate Objekt
- 21. Alter Bereich Abfrage in MySQL basierend auf zwei Altersgruppen Felder
- 22. ALTER und UPDATE Tabellen in SQL basierend auf zwei Kriterien
- 23. Ruhezustand: Reihenfolge der Objekte basierend auf dem Alter
- 24. Wie berechnen Sie eine Endzeit basierend auf Startzeit und Dauer?
- 25. Berechne das Alter mit Dezimalstellen vom Geburtsdatum
- 26. Berechnung Alter basierend auf einem birth in MS Zugang
- 27. Wie kann ich das Alter einer Person in Jahr, Monat, Tagen berechnen?
- 28. Alter mehr Spalten in der Datenbank basierend auf ausgewählte Werte-
- 29. Berechne das Alter in der Schwerkraft FForms
- 30. Update-Alter basierend auf dob in einer Sammlung in Mongodb
Wir haben nichts dagegen, Menschen bei den Hausaufgaben zu helfen, aber wir erwarten, dass sie anerkennen, dass es das ist, was es ist. Und wir erwarten, dass sie sich Mühe gegeben haben, das Problem selbst zu lösen. – DOK
Ich könnte mir vorstellen, dass der grundlegende Algorithmus etwas wie "age = current_date - birth_date" sein würde. – filipe
ist es notwendig, dass das Geburtsdatum im d/m/y Format sein sollte? –