首页 > 解决方案 > 如何以日期格式向用户询问准确的日期

问题描述

所以我有一个程序,我需要向用户询问日期和时间。但那个日期必须要么在未来,要么在很远的过去。而且我尝试过,UIDatePicker但发现日期选择器并不是解决此类问题的最佳方法,因为它需要大量滚动,并且由于某种原因它不会加载超过某个日期。我在想一个UIPickerView要求年、月、日和时间的方法。但我不知道该怎么做,因为假设这个月是 9 月,只有 30 天,那么我怎样才能阻止用户选择 31。所以,如果有人能帮助我,那就太棒了。如果您有任何问题或需要代码,请询问。哦,顺便说一句,我希望它采用日期格式,我可以将它与其他日期进行比较。

标签: swiftdateuipickerview

解决方案


给定yearand 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,monthday, 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对象进行比较。


推荐阅读