【发布时间】:2021-10-03 13:48:56
【问题描述】:
大家好,我正在与“Calendar”一起工作,我正在努力寻找正确的方式和优雅的方式来获得下周的星期二,前提是今天的日期是星期日或星期一。
例如,如果今天是星期日,我想显示下一个星期二的下一个可用日期
目前我已经这样做了,但我想知道是否有正确且更优雅的方式(我不知道使用DateInterval 是否会更好)
enum WeekdaysRef: Int { case Dom = 1, Lun, Mar, Mer, Gio, Ven, Sab }
extension Date {
func startDate(using calendar: Calendar = .current) -> Date {
let sunday = calendar.component(.weekday, from: self) == WeekdaysRef.Dom.rawValue
let monday = calendar.component(.weekday, from: self) == WeekdaysRef.Lun.rawValue
return sunday ? today(adding: 2) : Monday ? today(adding: 1) : self
}
func today(adding: Int, _ calendar: Calendar = .current) -> Date {
calendar.date(byAdding: .day, value: adding, to: self)!
}
}
【问题讨论】:
-
如果是星期天,您是否只关心显示星期二?您要使用的实际格式是什么?如果是星期一还是星期三,它应该显示什么?
-
@xTwisteDx 让我解释一下我正在使用 LazyVGrid 在 swiftUI 中显示日历。现在是用户打开应用程序后选择的日期和当前日期。仅当当天是星期日或星期一时,我才需要在星期二显示日历选择,否则日历必须显示当天的选择