日期选择器最小日期和分钟间隔视觉错误

时间:2021-07-24 02:22:01

标签: swift date uidatepicker

我有一个 UIDatePicker 并设置了最小日期和分钟间隔,但是在选择日期时存在视觉错误。最小分钟可选择但以不可选择的灰色显示。

我的代码:

@IBOutlet weak var datePicker: UIDatePicker!

override func viewDidLoad() {
   super.viewDidLoad()
   datePicker.preferredDatePickerStyle = .wheels
   datePicker.minuteInterval = 5
   datePicker.minimumDate = Date(timeIntervalSinceNow: 7200) // 7200 is equal to 2 hours
}

截图:

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为日期选择器有些混乱,因为最小日期不是五分钟的倍数。例如,如果您在 12:34 打开应用程序,那么 Date(timeIntervalSinceNow: 7200) 将是 14:34,并且这与日期选择器上的任何日期都不对应,这可能就是为什么它表现得像这。我不认为这是故意的。

无论如何,如果你总是给它一个 5 分钟的倍数(或任何 minuteInterval)的日期,那么它会按预期工作。

根据您对所需行为的描述,如果当前分钟部分不能被 5 整除,您似乎想找到下一个 5 分钟标记,然后加上 2 小时。你可以这样做:

let calendar = Calendar.current
let now = Date()
let currentMinute = calendar.component(.minute, from: now)
let mod = currentMinute % 5
let minutesUntilNextMultipleOf5 = mod == 0 ? mod : 5 - mod
let minDate = calendar.date(byAdding:
                DateComponents(hour: 2, minute: minutesUntilNextMultipleOf5),
                to: now)
datePicker.minimumDate = minDate
相关问题