Lex Debash
1 min readApr 18, 2016

Глава 12

Используйте два экземпляра NSDate для вычисления продолжительности вашей жизни в секундах. Подсказка: новый объект date по заданному году, месяцу и т. д. создается следующим образом:

NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:1969];
[comps setMonth:4];
[comps setDay:30];
[comps setHour:13];
[comps setMinute:10];
[comps setSecond:0];
NSCalendar *g = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *dateOfBirth = [g dateFromComponents:comps];

Для получения количества секунд между двумя экземплярами NSDate сле- дует использовать метод timeIntervalSinceDate:

double d = [laterDate timeIntervalSinceDate:earlierDate];

Решение:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
@autoreleasepool {
NSDate *now = [[NSDate alloc] init];
NSLog(@"Текущая дата (время по гринвичу) %@", now);

double seconds = [now timeIntervalSince1970];
NSLog(@"С 1 января 1970 года прошло %f секунд.", seconds);

NSDate *later = [now dateByAddingTimeInterval:100000];
NSLog(@"Через 100 000 секунд от текущего момента будет: %@", later);

NSCalendar *cal = [NSCalendar currentCalendar];
NSUInteger day = [cal ordinalityOfUnit:NSCalendarUnitDay
inUnit:NSCalendarUnitMonth
forDate:now];
NSLog(@"Сейчас %lu день месяца", day);

NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:1980];
[comps setMonth:11];
[comps setDay:9];
[comps setHour:13];
[comps setMinute:10];
[comps setSecond:0];
NSCalendar *g = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDate *dateOfBirth = [g dateFromComponents:comps];

double secondsInMyLive = [now timeIntervalSinceDate:dateOfBirth];
double minutesInMyLive = secondsInMyLive / 60;
double hourInMyLive = minutesInMyLive / 60;
double dayInMyLive = hourInMyLive / 24;
float yearInMyLive = dayInMyLive / 365;

NSLog(@"День моего рождения %@", dateOfBirth);
NSLog(@"Продолжительность моей жизни в секундах состовляет %.0f", secondsInMyLive);
NSLog(@"Продолжительность моей жизни в минутах состовляет %.0f", minutesInMyLive);
NSLog(@"Продолжительность моей жизни в часах состовляет %.0f", hourInMyLive);
NSLog(@"Продолжительность моей жизни в днях состовляет %.0f", dayInMyLive);
NSLog(@"Продолжительность моей жизни в годах состовляет %.0f", yearInMyLive);
}
return 0;
}
Lex Debash

Не журналист, не блогер, не фотограф, не музыкант, не являюсь автором каких либо проектов.