Я знаю, что это более старая тема, но поскольку есть более свежие ответы, я поделюсь вспомогательным методом, который я использую для округления NSDate до ближайшего 5-минутного интервала.
Я использую это для заполнения UITextField текущей датой UIDatePicker, когда она становится FirstResponder. Вы не можете просто использовать [NSDate date], когда UIDatePicker настроен с чем-то отличным от 1-минутного интервала. Мои настроены с 5-минутными интервалами.
+ (NSDate *)roundToNearest5MinuteInterval {
NSDate *ceilingDate = [NSDate dateWithTimeIntervalSinceReferenceDate:ceil([[NSDate date] timeIntervalSinceReferenceDate]/300.0)*300.0];
NSDate *floorDate = [NSDate dateWithTimeIntervalSinceReferenceDate:floor([[NSDate date] timeIntervalSinceReferenceDate]/300.0)*300.0];
NSTimeInterval ceilingInterval = [ceilingDate timeIntervalSinceNow];
NSTimeInterval floorInterval = [floorDate timeIntervalSinceNow];
if (fabs(ceilingInterval) < fabs(floorInterval)) {
return ceilingDate;
} else {
return floorDate;
}
}
Игнорирование заголовка вопроса и чтение того, чего действительно хочет добиться @aler (округление до ближайших 5 минут). Все, что вам нужно сделать, это следующее:
NSDate *ceilingDate = [NSDate dateWithTimeIntervalSinceReferenceDate:ceil([[NSDate date] timeIntervalSinceReferenceDate]/300.0)*300.0];