如何将UIDatePicker更改为特定时间(在代码中)

我需要动态地将UIDatePicker更改为特定的。

我的日期选择器仅设置为时间模式。 我可以设定时间

timePicker.setDate(NSDate(), animated: false) 

但我无法弄清楚如何将其更改为不同的时间而不是当前时间。

那么我该怎么改呢?

谢谢

您需要更改时间 ,您可以使用NSDateComponents并将修改日期设置为DatePicker

 var calendar:NSCalendar = NSCalendar.currentCalendar() let components = calendar.components(NSCalendarUnit.HourCalendarUnit | NSCalendarUnit.MinuteCalendarUnit, fromDate: NSDate()) components.hour = 5 components.minute = 50 datePicker.setDate(calendar.dateFromComponents(components)!, animated: true) 

您可以通过以下方式格式化日期和时间来自定义它:

 let dateString = "12-11-2015 10:50:00" var dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "dd-MM-yyyy HH:mm:ss" let date = dateFormatter.dateFromString(dateString) timePicker.setDate(date, animated: false) 

要将日期选择(仅限时间)设置为特定时间(例如“09:00”),我会像这样设置NSDateComponents和picker。

 let calendar = NSCalendar.currentCalendar() let components = NSDateComponents() components.hour = 9 components.minute = 0 timePicker.setDate(calendar.dateFromComponents(components)!, animated: true) 

Swift 3和4:

 extension UIDatePicker { func setDate(from string: String, format: String, animated: Bool = true) { let formater = DateFormatter() formater.dateFormat = format let date = formater.date(from: string) ?? Date() setDate(date, animated: animated) } } 

用法:

 datePicker.setDate(from: "1/1/2000 10:10:00", format: "dd/MM/yyyy HH:mm:ss") 

你可以像这样使用它

 timePicker.setDate(NSDate(timeInterval: 60, sinceDate: NSDate()), animated: false) 

要么

 timePicker.setDate(NSDate(timeIntervalSinceNow: 60), animated: false) 

它会设置日期与当前日期相差1分钟。

如果您不希望每次在字符串U中键入多行代码时,可以复制下面的函数并使用as

 let DateVar = DateTimeFrmSrgFnc("31/12/1990",FmtSrg: "dd/MM/yyyy") timePicker.setDate(DateVar, animated: false) func DateTimeFrmSrgFnc(DateSrgPsgVar: String, FmtSrg FmtSrgPsgVar: String)-> NSDate { // Format: "dd-MM-yyyy HH:mm:ss" let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = FmtSrgPsgVar return dateFormatter.dateFromString(DateSrgPsgVar)! } 

斯威夫特4:

  let calendar = Calendar.current var components = DateComponents() components.hour = 5 components.minute = 50 alert.setDate(calendar.date(from: components)!, animated: false)