使用minuteinterval的Swift 4日期选择器错误值

使用minuteinterval的Swift 4日期选择器错误值,swift,datepicker,Swift,Datepicker,我有一个日期选择器,“分钟间隔”设置为15分钟。 当我的屏幕出现时,我看到(例如)“今天18:45”,但如果我打印这个值,我会得到:“18:43”。 而如果我从选择器中选择日期,它将正常工作 override viewDidLoad(){ super.viewDidLoad pickerTime.minuteInterval = 15 print(pickerTime.date.description) } 问题在于,如果不

我有一个日期选择器,“分钟间隔”设置为15分钟。 当我的屏幕出现时,我看到(例如)“今天18:45”,但如果我打印这个值,我会得到:“18:43”。 而如果我从选择器中选择日期,它将正常工作

    override viewDidLoad(){
       super.viewDidLoad
       pickerTime.minuteInterval = 15  
       print(pickerTime.date.description)
      }  

问题在于,如果不手动设置DatePicker初始值,则会将其设置为当前时间。您可以获取当前分钟,将其转换为双精度,除以目标分钟间隔,将其四舍五入,乘以目标间隔,并将结果截断为除以60。现在,您可以将结果转换回整数,并使用下面的日历方法查找与分钟组件匹配的下一个日期:

func nextDate(after date: Date, matching components: DateComponents, matchingPolicy: Calendar.MatchingPolicy, repeatedTimePolicy: Calendar.RepeatedTimePolicy = .first, direction: Calendar.SearchDirection = .forward) -> Date?


要将当前日期设置为最近的时间间隔,请执行以下操作:

let datePicker = UIDatePicker()
let now = Date()  // "Feb 5, 2020 at 6:48 PM"
datePicker.date = now.nextDate(roundedTo: 15)
datePicker.minuteInterval = 15
datePicker.date   // "Feb 5, 2020 at 7:00 PM"

这回答了你的问题吗?
let datePicker = UIDatePicker()
let now = Date()  // "Feb 5, 2020 at 6:48 PM"
datePicker.date = now.nextDate(roundedTo: 15)
datePicker.minuteInterval = 15
datePicker.date   // "Feb 5, 2020 at 7:00 PM"