Я читаю книгу об Objective-C и работаю над упражнением по добавлению категории в класс NSDate под названием elapsedDays, которая возвращает количество прошедших дней между датами буксировки. Вот моя попытка:
-(unsigned long) elapsedDays: (NSDate *) theDate{
return ([self timeIntervalSinceDate:theDate]/3600)/24;
}
Вот основной раздел программы, в котором я тестирую свой код:
NSDate *now = [NSDate date];
NSDate *yesterday = [NSDate dateWithTimeIntervalSinceNow:-(3600*24)];
NSLog(@"%@",now);
NSLog(@"%@",yesterday);
NSLog(@"%lu",([now elapsedDays:yesterday]));
Проблема в том, что я получаю ноль результата:
2012-09-22 19:28:24 +0000
2012-09-21 19:28:24 +0000
0
Я понял, что деление [self timeIntervalSinceDate:theDate]/3600
дает 23.99972222222222. и это странно, потому что он должен дать нам 24, поскольку разница между двумя датами составляет всего один день, что составляет 24 часа. Я хочу понять, почему этот код дает мне неправильное количество секунд между двумя датами.
Я исправил это округлением результата деления, но все же хочу понять, что не так.
return round ([self timeIntervalSinceDate:theDate] / 3600) / 24;