我是个新手,所以慢慢来。
我正在 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)!
}
}
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
如果您需要从字符串计算它,您还可以创建一个扩展来将字符串转换为日期,如下所示:
extension Formatter {
static let yyyyMMdd: DateFormatter = {
let formatter = DateFormatter()
formatter.locale = .init(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd"
return formatter
}()
}
Run Code Online (Sandbox Code Playgroud)
extension String {
var dateFromYearMonthDay: Date? { Formatter.yyyyMMdd.date(from: self) }
}
Run Code Online (Sandbox Code Playgroud)
if let date = "2020-02-07".dateFromYearMonthDay {
print(Date().days(from: date)) // "29\n"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3269 次 |
| 最近记录: |