无法从 iOS 中的 firebase 获取时间戳?

Posted

技术标签:

【中文标题】无法从 iOS 中的 firebase 获取时间戳?【英文标题】:Unable to get timestamp from firebase in iOS? 【发布时间】:2017-12-01 10:21:33 【问题描述】:

我想从 Firebase 获取当前的 UTC 时间戳。我从设备获取 UTC 时间戳,但我更改了这种方法,以便用户不使用电话时间并使用无法更改的 Firebase 时间。

我使用了下面的代码,但它没有返回时间戳。

 print("server value \(FIRServerValue.timestamp())") 

它给了我[AnyHashable(".sv"): timestamp]的价值

我也试过了

 let objectToSave = ["date": [".sv": "timestamp"]]
        print("timestamp \(objectToSave)")

现在我有两个问题:

使用 Firebase 时间以使用户无法更改是否是一种好方法 设备时间? 如何获取时间戳的值?

【问题讨论】:

这就是你想要的***.com/questions/29243060/… 【参考方案1】:

所以,我将把答案分成两部分来匹配你的两个问题:

• 这是一个好方法吗?

这取决于您的应用程序做什么以及您希望它如何工作。例如,对于您可能具有玩家应该等待一小时才能再次玩游戏的功能的游戏,它实际上是通过转发其设备的时钟来击败用户“作弊”的唯一解决方案。但是,如果您的应用程序是消息应用程序或其他任何东西,您可以有两种方法:(1)您不关心什么是实时,因为您的代码可以对任何情况做出反应(未来的日期或类似的东西) , (2) 你认为它会让你的应用运行更流畅,因为你首先防止了边缘情况的发生,在这种情况下,你应该得到实时。

您可以考虑的另一个例子是 Apple 自己的应用程序。我在 MacBook 的内部时间上玩了很多,用 Xcode 和 ios 模拟器测试我自己的应用程序在未来或过去的事件。我意识到 Xcode 甚至 Finder 都是基于 Mac 告诉他们的时间。所以我最终得到了两个月内创建的文件和 Xcode 日志。

• 如何获取时间戳值?

您似乎没有正确访问 FIRServerValue.timeStamp()。 Firebase 文档说它会这样返回:class func timestamp() -> [AnyHashable : Any]。要操纵您从 Firebase 获得的结果,我建议您查看这两个非常相似的帖子,它们更详细地处理了这个问题:

Trying to convert Firebase timestamp to NSDate in Swift

Swift 4: Firebase Timestamp

【讨论】:

以上是关于无法从 iOS 中的 firebase 获取时间戳?的主要内容,如果未能解决你的问题,请参考以下文章

无法从 firebase 获取过去 30 天的数据

iOS Swift - 获取当前本地时间和日期时间戳

Firebase 时间戳值及查询 | JavaScript

iOS:如何从 Firebase 检索创建于/更新的时间戳?

Android:从firebase获取当前日期和时间

如何以毫秒为单位获取firebase服务器的当前时间戳?