问题描述
我正在使用 SwiftUI 2 并使用 DatePicker
和 displayedComponents: .hourAndMinute
。
我希望允许用户选择晚上 10 点到凌晨 2 点之间的任何时间。因此,我要使用的时间范围包含午夜。
遗憾的是,当我为 DatePicker
提供此时间范围时,它只允许我选择晚上 10:00 到 11:59 之间的时间:
@State private var date = Calendar.current.date(bySettingHour: 22,minute: 0,second: 0,of: Date())!
let startDate = Calendar.current.date(bySettingHour: 22,of: Date())!
...
DatePicker("",selection: $date,in: startDate...Calendar.current.date(byAdding: .hour,value: 4,to: startDate)!,displayedComponents: .hourAndMinute)
换句话说,只能选择午夜之前的时间,尽管提供的时间范围还包含 0 am 到 2 am(第二天)。
如何解决?
解决方法
通过删除 displayedComponents
,一切似乎都按预期工作。
如果您的目标是选择晚上 10 点到凌晨 2 点之间的任何时间,这意味着 10PM today
到 2AM tomorrow
,那么只显示 hourAndMinute
可能会造成混淆
DatePicker("",selection: $date,in: startDate...Calendar.current.date(byAdding: .hour,value: 4,to: startDate)!)
删除 displayedComponents