How to get the 'n' weekday of a Date

最后都变了- 提交于 2019-12-02 12:35:07

There is an alternative to get the start of the week which translates directly to Swift 3:

extension Date {
    func getWeekDay(day: Int) -> Date {
        let cal = Calendar.current
        let comps = cal.dateComponents([.weekOfYear, .yearForWeekOfYear], from: self)
        let beginningOfWeek = cal.date(from: comps)!
        let nextDate = cal.date(byAdding: .day, value: day, to: beginningOfWeek)!
        return nextDate
    }
}

This is your extension in Swift 3 for Date and a bit optimized

extension Date {
  func getWeekDay(day: Int) -> Date {
    var beginningOfWeek = Date()
    var interval : TimeInterval = 0
    let currentCalendar = Calendar.current
    currentCalendar.dateInterval(of: .weekOfYear, start: &beginningOfWeek, interval: &interval, for: self)
    return currentCalendar.date(byAdding: .day, value: day, to: beginningOfWeek)!
  }
}

rangeOfUnit(startDate:interval:forDate:) has been turned into dateInterval(of:start:interval:for:) in the new Calendar structure.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!