如何实现兼具日期与时间选择功能的UIDatePicker?
关于UIDatePicker同时选择日期和时间的问题解答
嗨,这个问题其实挺常见的,我来帮你理清楚~
一、为什么你觉得默认不支持?
其实iOS的UIDatePicker本身就支持同时选择日期和时间,只是需要设置正确的模式。早期版本的UIDatePicker可能默认是date或time单模式,但从iOS 2.0开始就提供了dateAndTime模式,只是可能你之前没配置对而已。
二、实现你需要的滚轮式日期时间选择器(和图中效果一致)
下面用Swift代码给你演示具体实现步骤:
- 创建并配置核心的UIDatePicker
// 初始化DatePicker实例 let datePicker = UIDatePicker() // 设置模式为同时选择日期和时间 datePicker.datePickerMode = .dateAndTime // 适配iOS 13.4+,设置为经典滚轮样式(和你图里的效果匹配) if #available(iOS 13.4, *) { datePicker.preferredDatePickerStyle = .wheels } // 可选配置:设置时区、区域,让显示符合用户当地习惯 datePicker.timeZone = .current datePicker.locale = .current // 可选:设置分钟间隔,比如只显示5的倍数分钟 datePicker.minuteInterval = 5
- 添加到视图并完成布局
把配置好的datePicker添加到你的页面视图中,用AutoLayout做布局示例:
datePicker.translatesAutoresizingMaskIntoConstraints = false view.addSubview(datePicker) // 约束布局,让选择器居中显示 NSLayoutConstraint.activate([ datePicker.centerXAnchor.constraint(equalTo: view.centerXAnchor), datePicker.centerYAnchor.constraint(equalTo: view.centerYAnchor), datePicker.widthAnchor.constraint(equalToConstant: 320) ])
- 获取用户选中的日期时间
如果需要拿到用户选择的结果,直接通过datePicker.date获取Date对象,再转成你需要的字符串格式:
let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy年MM月dd日 HH:mm" let selectedDateTime = dateFormatter.string(from: datePicker.date) print("用户选中的日期时间:\(selectedDateTime)")
三、额外小提示
- iOS 14及以上还支持
inline(内嵌式)和compact(紧凑型)样式,但你需要的滚轮式设置.wheels就完全匹配。 - 如果需要自定义显示语言、星期格式等,调整
locale属性即可,比如设置为Locale(identifier: "zh_CN")确保中文显示。
内容的提问来源于stack exchange,提问作者kiran
相关产品推荐
相关产品推荐

