如何将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)