微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SwiftUI:如何将时间选择器的范围设置为包含午夜?

如何解决SwiftUI:如何将时间选择器的范围设置为包含午夜?

我正在使用 SwiftUI 2 并使用 DatePickerdisplayedComponents: .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 today2AM tomorrow,那么只显示 hourAndMinute 可能会造成混淆

DatePicker("",selection: $date,in: startDate...Calendar.current.date(byAdding: .hour,value: 4,to: startDate)!)

删除 displayedComponents

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。