如何在Swift

时间:2015-10-29 03:58:48

标签: swift uidatepicker

有没有办法设置日期选择器来显示加载时的特定时间?我有四个日期选择器实例,它们使用GitHub中的squimer / datePickerDialog子类在UIAlertView中弹出,从开始时间,完成时间,开始日期和结束日期四个文本字段开始。

在我的应用程序中,默认开始时间为早上7:00,默认结束时间为下午5:00,让用户调整这些时间。

我只能看到你可以将datePicker.defaultDate设置为currentDate,minimumDate或maximumDate并且只能设置一次。是否可以在我的来自ViewController的调用中将defaultDate设置为sTime =“07:00”和fTime =“17:00”的硬编码字符串?

任何帮助都将不胜感激。

编辑:这就是我从viewController调用子类的方法

@IBAction func setFT(sender: UITextField) {
    resignKeyboardCompletely(sender)
    DatePickerDialog().show("Pick a Finish Time", doneButtonTitle: "Done", cancelButtonTitle: "Cancel", datePickerMode: .Time) {
        (timeFinish) -> Void in
        self.dateFormatter.dateFormat = "HH:mm"
        let finTime = self.dateFormatter.stringFromDate(timeFinish)
        self.finishTime.text = finTime
    }
    defaults.setObject(finishTime.text, forKey: "finishTime")
    print(finishTime.text)
}

请注意,在此过程中,我还尝试通过NSUser默认值维护持久性。

4 个答案:

答案 0 :(得分:31)

您是否正在寻找通过字符串设置时间。如果是这种情况,你可以使用这样的日期格式化程序。

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat =  "HH:mm"

let date = dateFormatter.dateFromString("17:00")

datePicker.date = date

将init添加到Picker class

init(time:String) {
    super.init(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.size.width, UIScreen.mainScreen().bounds.size.height))

    setupView()
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat =  "HH:mm"

    if let date = dateFormatter.dateFromString("17:00") {
        datePicker.date = date
    }
}

答案 1 :(得分:2)

快速4 +

let dateFormatter = DateFormatter()
dateFormatter.dateFormat =  "HH:mm"
let date = dateFormatter.date("17:00")
datePicker.date = date

答案 2 :(得分:1)

Swift 5

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
if let date = dateFormatter.date(from: "17:00") {
    print(date) // 2000-01-01 22:00:00 +0000
    datePicker.date = date
}

附加说明:如果您已经设置了 datePicker.minimumDate 并且您正在使用此 dateFormat,则日期/时间将默认为可能的最早日期——为此浪费了一个小时 :|< /p>

答案 3 :(得分:0)

我到达这里的原因似乎是无法设置开始日期。原来,您需要在设置最小和最大日期之后设置初始日期。