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

Distance between two dates in Swift, when one is a string

我有点新手,所以慢慢来。

我正在 swift 中制作一个应用程序,我有一个变量 dateCreated,它是一个字符串,日期格式为 "yyyy-MM-dd."

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

有人可以帮我找出最好的方法吗?我已尝试使用我在该网站上找到的类似问题的方法,但似乎没有任何效果。

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

extension Date {
    func days(from date: Date) -> Int {
        Calendar.current.dateComponents([.day], from: date, to: self).day!
    }
    func adding(days: Int) -> Date {
        Calendar.current.date(byAdding: .day, value: days, to: self)!
    }
    func adding(weeks: Int) -> Date {
        Calendar.current.date(byAdding: .weekOfYear, value: weeks, to: self)!
    }
}

let yesterday = Date().adding(days: -1)   // "Mar 6, 2020 at 4:49 PM"
let lastWeek  = Date().adding(weeks: -1)  // "Feb 29, 2020 at 4:49 PM"

Date().days(from: yesterday)         // 1
Date().days(from: lastWeek)          // 7

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

extension Formatter  {
    static let yyyyMMdd: DateFormatter = {
        let formatter = DateFormatter()
        formatter.locale = .init(identifier: "en_US_POSIX")
        formatter.dateFormat = "yyyy-MM-dd"
        return formatter
    }()
}

extension String {
    var dateFromYearMonthDay: Date? { Formatter.yyyyMMdd.date(from: self) }
}

if let date = "2020-02-07".dateFromYearMonthDay {
    print(Date().days(from: date))  // "29\n"
}