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"
}
我有点新手,所以慢慢来。
我正在 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"
}