从特定时间限制 UIDatePicker 日期。例如输入 DOB 到有限制的年龄限制
Posted
技术标签:
【中文标题】从特定时间限制 UIDatePicker 日期。例如输入 DOB 到有限制的年龄限制【英文标题】:Limiting UIDatePicker dates from a particular time. Such as Input DOB to a restricted age limit 【发布时间】:2015-10-03 18:35:20 【问题描述】:在我的代码中,我有一个 UITextField,当用户点击它时会打开一个 UIDatePicker 以使用户能够轻松有效地滚动到他们的出生日期。显然,我们不希望 UIDatePicker 像当前那样滚动到 2015 年及以上。由于它是出生日期输入字段,我还需要能够将条目限制为 16 岁以上。我该怎么做呢?
class SignUpViewController: UIViewController, UITextFieldDelegate
var datePicker:UIDatePicker!
@IBOutlet weak var dateTextField: UITextField!
override func viewDidLoad()
super.viewDidLoad()
// UI DATE PICKER SETUP
var customView:UIView = UIView(frame: CGRectMake(0, 100, 320, 160))
customView.backgroundColor = UIColor.clearColor()
datePicker = UIDatePicker(frame: CGRectMake(0, 0, 320, 160))
datePicker.datePickerMode = UIDatePickerMode.Date
customView.addSubview(datePicker)
dateTextField.inputView = customView
var doneButton:UIButton = UIButton (frame: CGRectMake(100, 100, 100, 44))
doneButton.setTitle("Done", forState: UIControlState.Normal)
doneButton.addTarget(self, action: "datePickerSelected", forControlEvents: UIControlEvents.TouchUpInside)
doneButton.backgroundColor = UIColor .grayColor()
dateTextField.inputAccessoryView = doneButton
【问题讨论】:
【参考方案1】:您可以使用 dateByAddingUnit 并从当前日期减去 16 年来设置 datePicker 的最大日期,如下所示:
datePicker.maximumDate = NSCalendar.currentCalendar().dateByAddingUnit(.Year, value: -16, toDate: NSDate(), options: [])
Xcode 10.2.1 • Swift 5
datePicker.maximumDate = Calendar.current.date(byAdding: .year, value: -16, to: Date())
【讨论】:
【参考方案2】:UIDatePicker
有一个可以设置的maximumDate
。只需在 IB 中将模式设置为“日期”并添加:
datePicker.maximumDate = NSDate(timeIntervalSinceNow: -504911232)
-504911232 表示今天之前的 16 年(会计闰年)
【讨论】:
不,不是那个意思。 504489600 是 15 年 11 个月 25 天。提示:闰年。这就是为什么你不用秒来计算日期。 将其更改为考虑大约 4 个闰日 除了重新发明 NSCalendar 之外,您可以尝试任何您想要的东西,但您将无法修复它。如果要描述超过一小时的相对时间跨度,则不能使用秒。使用适当的日历,您无法考虑夏令时、闰年或跳过的日子(至少有一个国家最近跳过了一整天)。以上是关于从特定时间限制 UIDatePicker 日期。例如输入 DOB 到有限制的年龄限制的主要内容,如果未能解决你的问题,请参考以下文章
如何将 UIDatePicker 更改为特定时间(在代码中)
如何使用相同的 UIDatePicker 分别在 2 UITextField 中获取日期和时间
如何从UIDatepicker中快速编辑用户的日期和时间选择器?