如何在 Swift 中为日期选择器设置特定的默认时间

Posted

技术标签:

【中文标题】如何在 Swift 中为日期选择器设置特定的默认时间【英文标题】:How to set a specific default time for a date picker in 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文本值所需的子类中? 【参考方案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】:

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

【讨论】:

以上是关于如何在 Swift 中为日期选择器设置特定的默认时间的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift 中为一个文本字段禁用 DatePicker 交互(用于选择日期)“

如何在日期选择器上设置特定时间?

如何在 Flutter 中使用日期选择器选择 endDate 时设置默认时间 11:59 pm ?

如何在 Swift 的日期选择器上设置本地通知时间

如何在 android 日期选择器中将特定选定日期设置为最小日期? (爪哇)

如何在 android 日期选择器中将特定选定日期设置为最小日期? [复制]