2014-11-24 2 views
0

Я выполнял задание для своего вступления в класс разработки мобильных устройств. Нам нужно было получить секунды с даты и указать, сколько лет человеку за считанные секунды, я хотел продлить это и показать фактический возраст человека. Это может быть достигнуто (проверьте мой код) Когда дата установлена ​​в СЛЕДУЮЩИЙ день, чтобы мой день рождения был завтра, он показывает неправильный ВОЗРАСТ. 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 
+2

Есть точно не 365 дней в году, так что ваша математика неправильно. Високосные годы. –

+0

Теперь имеет смысл. Есть ли способ достичь моей конечной цели? – Spade

+0

Получил это, вместо использования 365 я использовал 365.242 и его отображение правильно. Спасибо, махровый – Spade

ответ

0

Существует 365,242 дней в году не 365.

Смежные вопросы