UIDatePicker与15米的间隔,但总是精确的时间作为返回值

我有一个时间模式的UIDatePicker,间隔为15分钟。

现在说下午7:22。 dateselect器默认显示的值是当前时间舍入到下一个更高/更低的值,在这种情况下,它是下午7点15分。 如果用户与dateselect器交互,则显示的值也是返回的值。 但是,如果没有任何用户交互,我得到[UIDatePicker date]的时间返回值是确切的当前时间,即7:22坚持这个例子。 有没有办法总是得到实际显示在dateselect器上的值,而不是当前未被占用的时间,即使用户没有明确select一个值? 我已经尝试用[UIDatePicker setDate:[NSDate date]]手动设置select器,但是这不会改变行为。

任何提示? 提前致谢!

这不是一个完美的解决scheme,但它适用于我。 我已经从另一个post拿来并修改它接受不同的值。

 - (NSDate*)clampDate:(NSDate *)dt toMinutes:(int)minutes { int referenceTimeInterval = (int)[dt timeIntervalSinceReferenceDate]; int remainingSeconds = referenceTimeInterval % (minutes*60); int timeRoundedTo5Minutes = referenceTimeInterval - remainingSeconds; if(remainingSeconds>((minutes*60)/2)) {/// round up timeRoundedTo5Minutes = referenceTimeInterval +((minutes*60)-remainingSeconds); } return [NSDate dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)timeRoundedTo5Minutes]; } 

为它提供一个inputdate和一个分钟值(在这个线程的情况下从UIDatePicker.minuteInterval取得),它将返回一个时间限制到你可以提供给select器的时间间隔。

我修改了@ ima747的Swift 3/4的答案,并作为UIDatePicker的扩展。 picker.clampedDate

 extension UIDatePicker { /// Returns the date that reflects the displayed date clamped to the `minuteInterval` of the picker. /// - note: Adapted from [ima747's](http://stackoverflow.com/users/463183/ima747) answer on [Stack Overflow](http://stackoverflow.com/questions/7504060/uidatepicker-with-15m-interval-but-always-exact-time-as-return-value/42263214#42263214}) public var clampedDate: Date { let referenceTimeInterval = self.date.timeIntervalSinceReferenceDate let remainingSeconds = referenceTimeInterval.truncatingRemainder(dividingBy: TimeInterval(minuteInterval*60)) let timeRoundedToInterval = referenceTimeInterval - remainingSeconds return Date(timeIntervalSinceReferenceDate: timeRoundedToInterval) } }