import Foundation
extension Date {
func fromNow() -> String {
// ask for the full relative date
let formatter = RelativeDateTimeFormatter()
formatter.unitsStyle = .full
formatter.locale = Locale(identifier: Locale.preferredLanguages.first!)
// get exampleDate relative to the current date
let relativeDate = formatter.localizedString(for: self, relativeTo: Date.now)
return relativeDate
}
}
这个 Date extension 用于计算两个时间之间的差,并返回一个字符串表示这个差值。这里使用了 Swift 的日期和时间处理库 Foundation 中的 RelativeDateTimeFormatter 类。
具体来说,这个 extension 中的 fromNow 函数会先创建一个 RelativeDateTimeFormatter 对象,并设置其 unitsStyle 属性为 .full,即输出完整的时间差。然后通过 formatter.localizedString(for: self, relativeTo: Date.now) 方法获取当前时间和该时间之间的差值,并返回一个字符串表示该差值。最后,以相对时间的格式返回该字符串。
使用这个 extension 很简单,只需要在任何一个 Date 实例上调用 fromNow 函数即可,例如:
let date = Date(timeIntervalSinceNow: -86400) // 1 day ago
print(date.fromNow()) // 输出:Yesterday
这里的 date 实例表示一天前的时间,调用 fromNow 函数后会返回 "Yesterday"。