swift - 如何以日期格式向用户询问准确的日期
问题描述
所以我有一个程序,我需要向用户询问日期和时间。但那个日期必须要么在未来,要么在很远的过去。而且我尝试过,UIDatePicker
但发现日期选择器并不是解决此类问题的最佳方法,因为它需要大量滚动,并且由于某种原因它不会加载超过某个日期。我在想一个UIPickerView
要求年、月、日和时间的方法。但我不知道该怎么做,因为假设这个月是 9 月,只有 30 天,那么我怎样才能阻止用户选择 31。所以,如果有人能帮助我,那就太棒了。如果您有任何问题或需要代码,请询问。哦,顺便说一句,我希望它采用日期格式,我可以将它与其他日期进行比较。
解决方案
给定year
and month
,您可以计算day
要提供给您的选择器的可能值的数组,如下所示:
let calendar = Calendar.current
let components = DateComponents(year: year, month: month, day: 1)
guard let date = calendar.date(from: components),
let range = calendar.range(of: .day, in: .month, for: date) else { return }
let days = Array(range)
我希望它采用日期格式,我可以将它与其他日期进行比较。
一旦你有了year
,month
和day
, hour
(转换为 24 小时值,从 0 到 23),你可以Date
像这样构建对象:
let calendar = Calendar.current
let components = DateComponents(year: year, month: month, day: day, hour: hour, minute: minute)
guard let date = calendar.date(from: components) else { return }
现在date
可以将其与任何其他Date
对象进行比较。
推荐阅读
- powerbi - 选中多个复选框时显示“-”/“无值”的 DAX 函数
- reactjs - 如果选项是分页的,编辑时如何在选择控件中显示数据?
- reactjs - 我希望每次用户上传将使用 Firebase 和 Reactjs 显示的图像
- websocket - svelte 中的 Websocket 连接到 esp asyncwebserver
- java - 我想将在线音乐流添加到现有的 android 本地音乐播放器
- c - 如何从 IPL 函数中获得准确的值?
- python - 字典中元素的关系,键和值都是元组
- android - 如何使按钮使用现有布局
- python - 数据集的分割,其中输入和输出按不同的时间步长划分
- android - 对齐框中的项目 [Jetpack Compose]