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

ila*_*lan 12 uidatepicker ios swift

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

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

timePicker.setDate(NSDate(), animated: false)
Run Code Online (Sandbox Code Playgroud)

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

那么我该怎么改呢?

谢谢

art*_*mal 16

您需要更改时间,您可以使用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)
Run Code Online (Sandbox Code Playgroud)


Kev*_*gan 5

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

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


zom*_*bie 5

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)
   }
}
Run Code Online (Sandbox Code Playgroud)

用法:

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


Jay*_*afi 5

斯威夫特 5

let calendar = Calendar.current
var components = DateComponents()
components.hour = 5
components.minute = 50
    
timePicker.setDate(calendar.date(from: components)!, animated: false)
Run Code Online (Sandbox Code Playgroud)