Swift 从用户选择的内容获取第一个日期

Swift 从用户选择的内容获取第一个日期,swift,nsdate,Swift,Nsdate,我有一个应用程序,用户可以选择一周中工作的几天,所以周一周日是选项。我需要能够得到他们第一天工作的日期。所以如果今天是星期六,他们选择第一天工作是星期一,我需要能够得到星期一的日期吗 感谢您的帮助。首先,您需要为工作日创建一个枚举: extension Date { enum Weekday: Int { case sunday = 1, monday, tuesday, wednesday, thursday, friday, saturday } } 其次,

我有一个应用程序,用户可以选择一周中工作的几天,所以周一周日是选项。我需要能够得到他们第一天工作的日期。所以如果今天是星期六,他们选择第一天工作是星期一,我需要能够得到星期一的日期吗


感谢您的帮助。

首先,您需要为工作日创建一个枚举:

extension Date {
    enum Weekday: Int {
        case sunday = 1, monday, tuesday, wednesday, thursday, friday, saturday
    }
}
其次,创建一个扩展以返回所需的下一个工作日:

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"

查找表和一小部分代码。你能详细说明一下吗,我不知道那是什么?谢谢@LeoDabus。进一步说,如果当前日期是星期一,用户点击星期一,我需要第二天是当前星期一,而不是下一天。我该怎么做?嗨,利奥·达布斯,你能帮我做这个吗?我好像没办法。根据我上面的要求^^^ ^?谢谢,我现在没带mac电脑。我一拿到票就去看看chance@HenryBrown您只需创建一个扩展,从当前日期返回工作日组件,并检查当前日期和输入参数是否为星期一,如果为真,则返回相同的日期。谢谢,这很好!虽然这只是指星期一吗?因为星期一只是一个例子,我每天都需要这个。因此,如果用户选择了当天,我需要返回当天,而不是下一天。