将 Firebase Firestore 时间戳转换为日期(Swift)?

Posted

技术标签:

【中文标题】将 Firebase Firestore 时间戳转换为日期(Swift)?【英文标题】:Convert Firebase Firestore Timestamp to Date (Swift)? 【发布时间】: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"
    

【问题讨论】:

日期是一个时间戳,而不是一个间隔。见***.com/a/50890744 仅供参考,官方 Firebase pod,FirebaseFirestoreSwift 现在允许将 Date 编码/解码转换为 FIRTimestamp,反之亦然 请查看答案:***.com/a/56662889/2781088 【参考方案1】:

要么做:

let date = postTimestamp.dateValue()

或者你可以这样做:

let date = Date(timeIntervalSince1970: postTimestamp.seconds)

请参阅Timestamp reference documentation。

【讨论】:

谢谢你,这是一个很好的方法

以上是关于将 Firebase Firestore 时间戳转换为日期(Swift)?的主要内容,如果未能解决你的问题,请参考以下文章

将大型 json 文件从 Firebase 存储传输到 Firestore

如何将firebase存储下载URL保存到firestore集合?

将 Firebase 实时数据库迁移到 Firestore

将数据类的对象添加到 Kotlin 的 Firestore 时如何添加 Firebase 时间戳?

将 Firebase Firestore 和 Firebase Storage 一起调用成一个批次?

将 Firebase 身份验证用户映射到 Firestore 文档