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

时间:2015-03-11 11:29:53

标签: ios swift uidatepicker

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

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

设置时间
timePicker.setDate(NSDate(), animated: false)

但是我无法弄清楚如何将它改变到不同的时间而不是 当前时间。

那我该怎么改呢?

由于

7 个答案:

答案 0 :(得分:13)

您需要更改时间,您可以使用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)

答案 1 :(得分: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)

答案 2 :(得分:4)

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

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)

答案 3 :(得分:3)

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")

答案 4 :(得分:2)

斯威夫特4:

    let calendar = Calendar.current
    var components = DateComponents()
    components.hour = 5
    components.minute = 50

    alert.setDate(calendar.date(from: components)!, animated: false)

答案 5 :(得分:1)

你可以像这样使用它

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

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

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

答案 6 :(得分:0)

如果您希望每次从字符串中获取日期或时间时都不想键入多行代码 你可以复制下面的功能并用作

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)!
}