Я выполнял задание для своего вступления в класс разработки мобильных устройств. Нам нужно было получить секунды с даты и указать, сколько лет человеку за считанные секунды, я хотел продлить это и показать фактический возраст человека. Это может быть достигнуто (проверьте мой код) Когда дата установлена в СЛЕДУЮЩИЙ день, чтобы мой день рождения был завтра, он показывает неправильный ВОЗРАСТ. Heres my code;Задача-c Почему следующая дата неверна
#import <Foundation/Foundation.h>
int main (int argc, char* argv[]) {
@autoreleasepool {
NSDateComponents* comps = [[NSDateComponents alloc] init];
[comps setYear: 2000];
[comps setMonth: 11];
[comps setDay: 25];
[comps setHour: 17];
[comps setMinute: 50];
[comps setSecond: 01];
NSCalendar* g = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDate* dateOfBirth = [g dateFromComponents:comps];
NSDate* now = [NSDate date];
double secondsSince = [now timeIntervalSinceDate:dateOfBirth];
double actualAge = secondsSince/60/60/24/365;
NSLog(@"\nI am %.9f Seconds Old \nI am Exactly %.9f Years Old %@", secondsSince, actualAge, now);
}
}
Вот мой результат:
2014-11-24 13:35:23.547 secondsAlive[4978:44040]
I am 441661522.544027984 Seconds Old
I am Exactly 14.004995007 Years Old 2014-11-24 18:35:23 +0000
Есть точно не 365 дней в году, так что ваша математика неправильно. Високосные годы. –
Теперь имеет смысл. Есть ли способ достичь моей конечной цели? – Spade
Получил это, вместо использования 365 я использовал 365.242 и его отображение правильно. Спасибо, махровый – Spade