从用户选择的内容中获取第一个日期
Getting the first date from what a user has selected
我有一个应用程序,用户 select 可以在一周中的几天工作,所以可以选择周一至周日。我需要能够获得他们工作的第一天的日期。因此,如果今天是星期六,而他们 select 他们的第一天工作是星期一,我需要能够获得那个星期一的日期吗?
感谢任何帮助。
首先您需要为工作日创建一个枚举:
extension Date {
enum Weekday: Int {
case sunday = 1, monday, tuesday, wednesday, thursday, friday, saturday
}
}
第二次创建扩展到 return 所需的下一个工作日:
extension Date {
var weekday: Int {
return Calendar.current.component(.weekday, from: self)
}
func following(_ weekday: Weekday) -> Date {
// **edit**
// Check if today weekday and the passed weekday parameter are the same
if self.weekday == weekday.rawValue {
// return the start of day for that date
return Calendar.current.startOfDay(for: self)
}
// **end of edit**
return Calendar.current.nextDate(after: self, matching: DateComponents(weekday: weekday.rawValue), matchingPolicy: .nextTime)!
}
}
现在您可以使用您的方法如下:
let now = Date()
now.following(.sunday) // "Mar 10, 2019 at 12:00 AM"
now.following(.monday) // "Mar 11, 2019 at 12:00 AM"
now.following(.tuesday) // "Mar 12, 2019 at 12:00 AM"
now.following(.wednesday) // "Mar 6, 2019 at 12:00 AM"
now.following(.thursday) // "Mar 7, 2019 at 12:00 AM"
now.following(.friday) // "Mar 8, 2019 at 12:00 AM"
now.following(.saturday) // "Mar 9, 2019 at 12:00 AM"
我有一个应用程序,用户 select 可以在一周中的几天工作,所以可以选择周一至周日。我需要能够获得他们工作的第一天的日期。因此,如果今天是星期六,而他们 select 他们的第一天工作是星期一,我需要能够获得那个星期一的日期吗?
感谢任何帮助。
首先您需要为工作日创建一个枚举:
extension Date {
enum Weekday: Int {
case sunday = 1, monday, tuesday, wednesday, thursday, friday, saturday
}
}
第二次创建扩展到 return 所需的下一个工作日:
extension Date {
var weekday: Int {
return Calendar.current.component(.weekday, from: self)
}
func following(_ weekday: Weekday) -> Date {
// **edit**
// Check if today weekday and the passed weekday parameter are the same
if self.weekday == weekday.rawValue {
// return the start of day for that date
return Calendar.current.startOfDay(for: self)
}
// **end of edit**
return Calendar.current.nextDate(after: self, matching: DateComponents(weekday: weekday.rawValue), matchingPolicy: .nextTime)!
}
}
现在您可以使用您的方法如下:
let now = Date()
now.following(.sunday) // "Mar 10, 2019 at 12:00 AM"
now.following(.monday) // "Mar 11, 2019 at 12:00 AM"
now.following(.tuesday) // "Mar 12, 2019 at 12:00 AM"
now.following(.wednesday) // "Mar 6, 2019 at 12:00 AM"
now.following(.thursday) // "Mar 7, 2019 at 12:00 AM"
now.following(.friday) // "Mar 8, 2019 at 12:00 AM"
now.following(.saturday) // "Mar 9, 2019 at 12:00 AM"