Я написал так, чтобы рассчитать час разницы.Расчет разницы в часах iOS
+ (NSInteger)hoursBetweenDate:(NSDate*)fromDateTime andDate:(NSDate *)toDateTime
{
NSDate *fromDate;
NSDate *toDate;
NSCalendar *calendar = [NSCalendar currentCalendar];
[calendar setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
[calendar rangeOfUnit:NSHourCalendarUnit startDate:&fromDate
interval:NULL forDate:fromDateTime];
[calendar rangeOfUnit:NSHourCalendarUnit startDate:&toDate
interval:NULL forDate:toDateTime];
NSDateComponents *difference = [calendar components:NSHourCalendarUnit
fromDate:fromDate toDate:toDate options:0];
return [difference hour];
}
Проблема заключается в том, что если вход, как это,
2016-03-09 07:58:39 +0000 (fromDateTime) 2016-03-09 9:07:44 +0000 (toDateTime),
разница всегда 2 часа. Фактически, это должно быть 1 час и 10 минут. В результате я хочу показать только 1 час. Есть ли способ округлить вверх или вниз?
Вы можете изменить протокол от '' fromDateTime' и toDateTime' до 0, прежде чем вычислить разницу, то результат будет один час. –
@FabioBerger Я думаю, он хочет количество часов между датами, и в этом случае этого будет недостаточно (думаю, 25 часов). – Eiko
@Eiko Да, он хочет часы между датами, но его проблема - минуты. Если вы установите минуты обеих дат равными 0, то расчеты календаря верны, независимо от того, насколько далеки даты друг от друга. –