2016-09-16 9 views
0

私はこの機能を迅速に翻訳する必要があります。 基本的に、今週の「n」日は何になりますか?たとえばNSDate()とgetWeekDay(0)を併用すると、Sunに9月11日などが与えられます。 しかし、Swift-3にはrangeOfUnitが存在しないようです。 これは はスウィフト3に直接変換する週の開始を取得するための代替はありスウィフト-2日付の平日を得る方法

 
extension NSDate { 
    func getWeekDay(day: Int) -> NSDate { 
     var beginningOfWeek: NSDate? 
     NSCalendar.currentCalendar().rangeOfUnit(NSCalendarUnit.WeekOfYear, startDate: &beginningOfWeek, interval: nil, forDate: self) 
     let comps = NSDateComponents() 
     comps.day = day 
     comps.minute = NSCalendar.currentCalendar().component(NSCalendarUnit.Minute, fromDate: self) 
     comps.hour = NSCalendar.currentCalendar().component(NSCalendarUnit.Hour, fromDate: self) 
     let nextDate = NSCalendar.currentCalendar().dateByAddingComponents(comps, toDate: beginningOfWeek!, options: .SearchBackwards) 
     return nextDate! 
    } 
} 

答えて

4

の私の以前の実装だった:

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 
    } 
} 
3

これはスウィフト3であなたの拡張機能でありますDateおよび

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:)を最適化ビットがになっています新しいCalendar構造の

関連する問題