【问题标题】:How to set a specific default time for a date picker in Swift如何在 Swift 中为日期选择器设置特定的默认时间
【发布时间】:2016-01-29 02:12:09
【问题描述】:

有没有办法设置日期选择器以显示特定的加载时间?我使用来自 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 Defaults 来保持持久性。

【问题讨论】:

  • 在四个viewController文本值所需的子类中?

标签: swift uidatepicker


【解决方案1】:

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

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

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

datePicker.date = date

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

【讨论】:

  • 这是我一直在尝试的那种东西,但我不确定如何实现它。这就是我成功调用子类 datePickerDialog.swift 的方式。
  • @IBAction func setFT(sender: UITextField) { resignKeyboardCompletely(sender) DatePickerDialog().show("Pick a Finish Time", doneButtonTitle: "Done", cancelButtonTitle: "Cancel", datePickerMode: . Time) { (timeFinish) -> self.dateFormatter.dateFormat = "HH:mm" 中的无效 let finTime = self.dateFormatter.stringFromDate(timeFinish) self.finishTime.text = finTime } defaults.setObject(finishTime.text, forKey: "finishTime") 打印(finishTime.text)
  • 如果你想让你的 datePicker 在这个时候开始,把这段代码放在 viewDidLoad 中......我不确定你在问什么。您可能应该尝试进一步解释您正在尝试的内容以及您尝试失败的具体内容
  • 对不起。这一切都很新,包括堆栈溢出。
  • 您是否在使用第三方数据选择器对话框?还是您自己构建了 DatePickerDialog?
【解决方案2】:

斯威夫特 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,则日期/时间将默认为其最早可能的日期——在此浪费了一个小时:|

【讨论】:

    【解决方案3】:

    用 swift 4+

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

    【讨论】:

      【解决方案4】:

      我来到这里是因为设置开始日期似乎不起作用。事实证明,您需要在设置最小和最大日期后设置初始日期。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-14
        • 2021-06-06
        • 2019-09-05
        相关资源
        最近更新 更多