Swift3 Swift 3日期扩展:获取';从'开始的天数;约会

Swift3 Swift 3日期扩展:获取';从'开始的天数;约会,swift3,nscalendar,Swift3,Nscalendar,在我的旧代码中,我有一个名为“daysFrom”的日期扩展,我似乎无法迁移到Swift 3: func daysFrom(_ date:Date) -> Int{ //Swift 2: //return Calendar.current.date(.firstWeekday, from: date, to: self, options: []).day //My Swift 3 attempt, doesn't work: return Calendar

在我的旧代码中,我有一个名为“daysFrom”的日期扩展,我似乎无法迁移到Swift 3:

func daysFrom(_ date:Date) -> Int{
    //Swift 2: 
    //return Calendar.current.date(.firstWeekday, from: date, to: self, options: []).day

    //My Swift 3 attempt, doesn't work:
    return Calendar.current.date([.firstWeekday], from: date, to: self).day
}
我找到了斯威夫特的线索,上面写着:

…Swift 2中的NSCalendarUnit和日历都不包含。Swift 3中的组件包含第一个工作日的组件


那么,如何替换此扩展名???

要获得两个日期之间的天数,请使用
dateComponents

extension Date {
    func days(from date: Date) -> Int {
        return Calendar.current.dateComponents([.day], from: date, to: self).day!
    }
}
然后

let days = endDate.days(from: startDate)

您的“Swift 2”版本不是有效的Swift 2代码,并且第一个工作日不是日历组件。在Swift 3之前的所有Swift版本中都有代码:。我还更新了原始问题o Xcode 8 beta 6,以回应@MartinR,在Xcode 8 beta中的某个点上,迁移助手将旧的
weekComponent
更改为
firstWeekday
,而不是原来的
weekday
。给我带来了更多的困惑。