我试图将datePicker的时间从上午09:00限制到晚上9:00 (21:00),时间间隔为30分钟。我已经尝试了所有已知的方法,并在互联网上搜索了很长时间。但我什么也没找到。这是我写的代码
//datePicker.setDate(dateFormatter.date(from: "09.00")!, animated: true)
datePicker.maximumDate = Calendar.current.date(byAdding: .hour, value: -12, to: dateFormatter.date(from: "21.00")!) //)Calendar.current.date(byAdding: Calendar.Component.hour, value: 1, to: Date())
datePicker.minimumDate = Calendar.current.date(byAdding: Calendar.Component.hour, value: -12, to: dateFormatter.date(from: "09.00")!)但没起作用。请帮帮忙。
发布于 2018-03-27 19:58:22
限制用户,这样她/他只能选择9到12之间的日期,但是会显示所有可用的选项,因为这是日期选择器视图的默认行为,但是通过设置适当的minimumDate和maximumDate,用户只能在9到21之间选择。试试下面的代码,让我知道它是否有效。
如果您想显示您选择的时间,我将建议更好的创建一个要显示的时间数组,因此用户只能从您提供的数组中进行选择,比如上午9点到晚上9点,比如9:00,9:30,10:00,10:30,.....,21:00并将数组设置为普通的选择器。
datePicker.datePickerMode = .time // setting mode to timer so user can only pick time as you want
datePicker.minuteInterval = 30 // with interval of 30
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
let min = dateFormatter.date(from: "9:00") //createing min time
let max = dateFormatter.date(from: "21:00") //creating max time
datePicker.minimumDate = min //setting min time to picker
datePicker.maximumDate = max //setting max time to picker发布于 2018-03-27 19:50:13
您希望在minimumDate和maximumDate中输入的值是当前日期的9点和9点。当前日期是您的代码中缺少的内容。
let cal = Calendar.current
let now = Date() // get the current date and time (2018-03-27 19:38:44)
let components = cal.dateComponents([.day, .month, .year], from: now) // extract the date components 28, 3, 2018
let today = cal.date(from: components)! // build another Date value just with date components, without the time (2018-03-27 00:00:00)
datePicker.minimumDate = today.addingTimeInterval(60 * 60 * 9) // adds 9h
datePicker.maximumDate = today.addingTimeInterval(60 * 60 * 21) // adds 21h发布于 2018-03-27 19:38:01
你试过从故事板上实现这一点吗?
尝试以下配置:

来自代码:
let calendar = Calendar.current
var dateComponents = calendar.dateComponents([.day, .month, .year], from: Date())
dateComponents.setValue(9, for: .hour)
let minDate = Calendar.current.date(from: dateComponents)
dateComponents.setValue(21, for: .hour)
let maxDate = Calendar.current.date(from: dateComponents)
self.datePicker?.minimumDate = minDate
self.datePicker?.maximumDate = maxDate
self.datePicker?.minuteInterval = 30https://stackoverflow.com/questions/49520781
复制相似问题