首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将启用的时间限制在UIDatePicker time 4中的特定时间范围内

将启用的时间限制在UIDatePicker time 4中的特定时间范围内
EN

Stack Overflow用户
提问于 2018-03-27 19:14:47
回答 4查看 6.6K关注 0票数 1

我试图将datePicker的时间从上午09:00限制到晚上9:00 (21:00),时间间隔为30分钟。我已经尝试了所有已知的方法,并在互联网上搜索了很长时间。但我什么也没找到。这是我写的代码

代码语言:javascript
复制
//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")!)

但没起作用。请帮帮忙。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-03-27 19:58:22

限制用户,这样她/他只能选择9到12之间的日期,但是会显示所有可用的选项,因为这是日期选择器视图的默认行为,但是通过设置适当的minimumDatemaximumDate,用户只能在9到21之间选择。试试下面的代码,让我知道它是否有效。

如果您想显示您选择的时间,我将建议更好的创建一个要显示的时间数组,因此用户只能从您提供的数组中进行选择,比如上午9点到晚上9点,比如9:00,9:30,10:00,10:30,.....,21:00并将数组设置为普通的选择器。

代码语言:javascript
复制
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
票数 9
EN

Stack Overflow用户

发布于 2018-03-27 19:50:13

您希望在minimumDatemaximumDate中输入的值是当前日期的9点和9点。当前日期是您的代码中缺少的内容。

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2018-03-27 19:38:01

你试过从故事板上实现这一点吗?

尝试以下配置:

来自代码:

代码语言:javascript
复制
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 = 30
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49520781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档