Swift中两个日期之间的距离,当一个是字符串时

时间:2015-02-01 17:47:49

标签: ios date swift

我是一个新手,所以对我来说很慢。

我正在使用swift创建一个应用程序,并且我有一个变量dateCreated,这是一个日期格式为“yyyy-MM-dd”的字符串。

我正在尝试创建另一个变量currentDate作为当前日期,并查找它们之间作为Int的天数。

有人可以帮我找出最好的方法吗?我尝试过使用我在本网站上发现的类似问题的方法,但似乎没有任何工作。

1 个答案:

答案 0 :(得分:0)

您正在寻找的是NSCalendar框架,它可以帮助您计算两个日期之间的差异。我建议你创建一个扩展来帮助你,如下所示:

extension NSDate {
    func daysFrom(date:NSDate) -> Int {
        return NSCalendar.currentCalendar().components(.CalendarUnitDay, fromDate: date, toDate: self, options: nil).day
    }
    func xDays(days: Int) -> NSDate {
        return NSCalendar.currentCalendar().dateByAddingUnit(.CalendarUnitDay, value: days, toDate: self, options: nil)!
    }
    func xWeeks(days: Int) -> NSDate {
        return NSCalendar.currentCalendar().dateByAddingUnit(.CalendarUnitWeekOfYear, value: days, toDate: self, options: nil)!
    }
}

let yesterday = NSDate().xDays(-1)   // "Jan 31, 2015, 17:41"
let lastWeek  = NSDate().xWeeks(-1)  // "Jan 25, 2015, 17:42"

NSDate().daysFrom(yesterday)         // 1
NSDate().daysFrom(lastWeek)          // 7

如果您需要从String计算它,您还可以创建一个扩展名,将您的字符串转换为NSDate,如下所示:

extension String {
    var asDate: NSDate {
        let formatter = NSDateFormatter()
        formatter.dateFormat = "yyyy-MM-dd"
        return formatter.dateFromString(self)!
    }
}

NSDate().daysFrom("2015-01-01".asDate)  // 31