【发布时间】:2018-12-09 12:19:11
【问题描述】:
我在 Firestore 字段中保存了一个日期作为时间戳,我想在 Swift 中将其转换为日期:
June 19,2018 at 7:20:21 PM UTC-4
我尝试了以下方法,但出现错误:
let date = Date(timeIntervalSince1970: postTimestamp as! TimeInterval)
错误:
Could not cast value of type 'FIRTimestamp' (0x104fa8b98) to 'NSNumber'
我想转换为 Date 的原因是我可以使用这个 Date 扩展来模仿你在 Instagram 帖子上看到的时间戳:
extension Date {
func timeAgoDisplay() -> String {
let secondsAgo = Int(Date().timeIntervalSince(self))
let minute = 60
let hour = 60 * minute
let day = 24 * hour
let week = 7 * day
if secondsAgo < minute {
return "\(secondsAgo) seconds ago"
} else if secondsAgo < hour {
return "\(secondsAgo / minute) minutes ago"
} else if secondsAgo < day {
return "\(secondsAgo / hour) hours ago"
} else if secondsAgo < week {
return "\(secondsAgo / day) days ago"
}
return "\(secondsAgo / week) weeks ago"
}
}
【问题讨论】:
-
日期是一个时间戳,而不是一个间隔。见stackoverflow.com/a/50890744
-
仅供参考,官方 Firebase pod,FirebaseFirestoreSwift 现在允许将 Date 编码/解码转换为 FIRTimestamp,反之亦然
标签: swift firebase google-cloud-firestore