【问题标题】:How to get the timestamp date from firebase firestore?如何从 Firebase Firestore 获取时间戳日期?
【发布时间】:2018-11-30 11:24:32
【问题描述】:

如何从 Firebase firestore 在 iOS 中获取正确的时间戳?

我有一个名为 playerLoginTime: November 30, 2018 at 4:12:20 PM UTC+5:30 的字段

但是当我尝试得到错误的结果时。

2018-11-30 10:47:12 +0000

我想以MMM dd,yyyy 的形式获取日期。

我的查询如下:

let docRef = db.collection("employees").document(userID)
docRef.getDocument { (document, error) in
    if let document = document, document.exists {
        if document.get("playerLoginTime") != nil {
            self.loginTime = document.get("playerLoginTime") as! Date;
            print("Before printdates  \(self.loginTime )")
        }
    }

【问题讨论】:

  • November 30, 2018 at 4:12:20 PM UTC+5:302018-11-30 10:47:12 +0000 是相同的。它代表相同的日期,不是吗?您注意到“UTC+5:30”和“+0000”这就是为什么您有 5h:30 的差异?如果您想将其打印为“2018 年 11 月 30 日下午 4:12:20 UTC+5:30”,则需要 DateFormatter(),但这只是 unixTimeStamp 中秒数的表示。
  • @Larme 好的先生...但是我 android 数据库中有什么相同的东西返回。i iOS 它给我的结果 5.30 小时不同..
  • @Larme 我想以MMM dd,yyyy 的形式获取日期,请帮助我如何获取它
  • 因为它在解释日期?如前所述,(NS)Date 只是一个对象,它封装了从 70 年 1 月 1 日开始的秒数(为了简化)。如果你在英国或印度怎么办?你不会根据你的时区来获取日期吗?然后你使用(NS)DateFormatter。使用DateFormatter 查看从DateString 的所有问题。这是一个常见的问题,你在 SO 中有很多点,你应该能够找到答案,现在你得到了要搜索的关键词。
  • @Larme 谢谢你的建议先生....实际上我在iOS和swift中没有knowadge...我会尝试如何实现...

标签: ios swift google-cloud-firestore


【解决方案1】:

我想我也有这个问题。

我通过转换为 TimeStamp 来修复它,这是一种 Firebase 类型,而不是 Date,然后在显示之前使用 dateFormatter 转换为 Date

要获得 TimeStamp 类型,您只需将 Firebase 导入您需要的文件中。

额外提示:我建议使用 SwiftDate 库,而不是自己转换它(如果您不介意开源库)!它非常易于使用,从TimeStampDate 到格式化日期的转换很容易。此外,您还可以轻松转换为类似 Twitter 的时间戳(即 2 分钟前的 2m

希望有帮助!

【讨论】:

    【解决方案2】:

    这是您的解决方案:

        let docRef = db.collection("employees").document(userID)
         docRef.getDocument { (document, error) in
                if let document = document, document.exists {
    
                if document.get("playerLoginTime") != nil {
                        self.loginTime = document.get("playerLoginTime") as! Date;
                        let dateFormatter = DateFormatter()
                        dateFormatter.dateFormat = "MM-dd-yyyy"
                        self.loginTime = dateFormatter.string(from: self.loginTime)
    
                    }
    
    }
    

    【讨论】:

    • 请不要只发布代码。好的答案可以解释问题所在,并说明答案如何解决问题。
    • @Haani Dev Cannot assign value of type 'String' to type 'Date' 我收到此错误........在这一行 dateFormatter.string(from: self.loginTime)
    猜你喜欢
    • 2019-03-11
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 2018-12-09
    • 2023-03-22
    相关资源
    最近更新 更多