SwiftUI:如何设置时间选择器的范围以包含午夜?
Posted
技术标签:
【中文标题】SwiftUI:如何设置时间选择器的范围以包含午夜?【英文标题】:SwiftUI: How to set a time picker's range to contain midnight? 【发布时间】:2021-07-29 05:54:18 【问题描述】:我正在使用 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, minute: 0, second: 0, of: Date())!
...
DatePicker("", selection: $date, in: startDate...Calendar.current.date(byAdding: .hour, value: 4, to: startDate)!, displayedComponents: .hourAndMinute)
换句话说,只能选择直到午夜的时间,尽管提供的时间范围还包含 0 am 到 2 am(第二天)。
如何解决?
【问题讨论】:
【参考方案1】:通过删除displayedComponents
,一切似乎都按预期工作。
如果您的目标是选择晚上 10 点到凌晨 2 点之间的任何时间,这意味着 10PM today
到 2AM tomorrow
,那么只显示 hourAndMinute
可能会令人困惑
DatePicker("", selection: $date, in: startDate...Calendar.current.date(byAdding: .hour, value: 4, to: startDate)!)
删除displayedComponents
【讨论】:
嗨 Cédric,我很清楚这种可能性。但是,我想让我的应用程序的用户在接下来的 4 小时内选择任何时间点。因此,如果是晚上 10 点,用户应该可以轻松地选择晚上 10 点到凌晨 2 点之间的任何时间,而不必担心当天的情况。我不认为,这会让人感到困惑。以上是关于SwiftUI:如何设置时间选择器的范围以包含午夜?的主要内容,如果未能解决你的问题,请参考以下文章