带有时间类型的日期选择器
Posted
技术标签:
【中文标题】带有时间类型的日期选择器【英文标题】:Date picker with type time 【发布时间】:2019-05-23 11:10:13 【问题描述】:时间选择器不允许我设置最大时间,我正在使用以下代码行:
let formatter = DateFormatter()
formatter.dateFormat = "hh:mm a"
let locale = NSLocale(localeIdentifier: "en_US_POSIX")
formatter.locale = locale as Locale
timePicker.datePickerMode = .time
let min = formatter.date(from: "08:00 AM") //createing mintime
let max = formatter.date(from: "11:00 PM") //creating max time
print(max)
timePicker.minimumDate = min //setting min time to picker
timePicker.maximumDate = max //setting max time to picker
timePicker.minuteInterval = 30
【问题讨论】:
timePicker.datePickerMode = .time ,这个 timePicker 变量在哪里初始化。 【参考方案1】:使用以下代码设置最小和最大时间,希望对您有所帮助。
借助DateComponents
在Date
中设置小时和分钟,然后分配datePicker
的最小值和最大值
let startHour: Int = 6
let endHour: Int = 23
let date1: NSDate = NSDate()
let gregorian: NSCalendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)!
var components: DateComponents = gregorian.components(([.day, .month, .year]), from: date1 as Date)
components.hour = startHour
components.minute = 0
components.second = 0
let startDate: Date = gregorian.date(from: components)!
components.hour = endHour
components.minute = 0
components.second = 0
let endDate: Date = gregorian.date(from: components)!
timePicker.datePickerMode = .Time
timePicker.minimumDate = startDate
timePicker.maximumDate = endDate
timePicker.setDate(startDate, animated: true)
timePicker.reloadInputViews()
【讨论】:
答案如果解释问题和解决方案会更有帮助。 不要在 Swift 3+ 中使用NS..
类,如果有本地对应类(Calendar
,Date
)【参考方案2】:
试试这个
let max = Calendar.current.date(bySettingHour: 11, minute: 0, second: 0, of: Date())!
timePicker.maximumDate = max
【讨论】:
我认为 min time 也应该是一样的。 答案如果解释问题和解决方案会更有帮助。以上是关于带有时间类型的日期选择器的主要内容,如果未能解决你的问题,请参考以下文章
带有手动输入和动态最小日期的 jQuery UI 日期选择器
带有禁用日期的 ReactJS 日期范围选择器 - Rsuite
带有 Angularjs ng 模型的语义 UI 日期选择器
带有日期选择器的 Android 微调器,例如 Google 日历应用