Swift 如何为日期选择器设置特定的默认时间
How to set a specific default time for a date picker in Swift
有什么方法可以设置日期选择器在加载时显示特定时间吗?我有四个日期选择器实例从开始时间、结束时间、开始日期和结束日期的四个文本字段启动,使用 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 来保持持久性。
您是否正在寻找通过字符串设置时间。如果是这种情况,您可以使用这样的日期格式化程序。
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "HH:mm"
let date = dateFormatter.dateFromString("17:00")
datePicker.date = date
正在向 Picker class
添加一个 init
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
}
}
我来到这里是因为设置开始日期似乎不起作用。原来你需要在设置最小和最大日期后设置初始日期。
和swift 4+
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
let date = dateFormatter.date(from: "17:00")
datePicker.date = date
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 并且您正在使用此日期格式,则 date/time 将默认为最早的日期 - -浪费了一个小时:|
有什么方法可以设置日期选择器在加载时显示特定时间吗?我有四个日期选择器实例从开始时间、结束时间、开始日期和结束日期的四个文本字段启动,使用 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 来保持持久性。
您是否正在寻找通过字符串设置时间。如果是这种情况,您可以使用这样的日期格式化程序。
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "HH:mm"
let date = dateFormatter.dateFromString("17:00")
datePicker.date = date
正在向 Picker class
添加一个 initinit(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
}
}
我来到这里是因为设置开始日期似乎不起作用。原来你需要在设置最小和最大日期后设置初始日期。
和swift 4+
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
let date = dateFormatter.date(from: "17:00")
datePicker.date = date
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 并且您正在使用此日期格式,则 date/time 将默认为最早的日期 - -浪费了一个小时:|