【问题标题】:Swift 3 Date Extension: Getting 'daysFrom' a dateSwift 3 日期扩展:获取“daysFrom”日期
【发布时间】:2016-09-05 20:30:00
【问题描述】:

在我的旧代码中,我有一个名为“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
}

我发现this Swift 线程说:

...Swift 2 中的 NSCalendarUnit 和 Swift 3 中的 Calendar.Component 都不包含组件 firstWeekday...

那么我该如何替换这个扩展呢??

【问题讨论】:

  • 您的“Swift 2”版本不是有效的 Swift 2 代码,并且 firstWeekday 不是日历组件。
  • Swift days between two NSDates 有适用于 Swift 3 之前的所有 Swift 版本的代码:stackoverflow.com/a/38549470/1187415
  • 我也更新了原问题 o Xcode 8 beta 6 stackoverflow.com/a/27184261/2303865
  • 作为对@MartinR 的回应,在 Xcode 8 测试版中的某个时刻,迁移助手将旧的 weekComponent 更改为 firstWeekday,而不是应有的 weekday。给我带来了超出应有的混乱。

标签: swift3 nscalendar


【解决方案1】:

要获取两个日期之间的天数,请使用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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多