gpt4 book ai didi

ios - 尝试在 Swift 中将 Firebase 时间戳转换为 NSDate

转载 作者:IT王子 更新时间:2023-10-29 05:13:48 30 4
gpt4 key购买 nike

我正在尝试在 Swift 应用程序中使用 Firebase 时间戳。我想将它们存储在我的 Firebase 中,并在我的应用程序中将它们用作 native NSDate 对象。

文档说它们是 unix 纪元时间,所以我试过了:

NSDate(timeIntervalSince1970:FirebaseServerValue.timestamp)

没有运气。

这个:

FirebaseServerValue.timestamp

返回

0x00000001199298a0

根据调试器。传递这些时间戳的最佳方式是什么?

最佳答案

ServerValue.timestamp() 的工作方式与在 Firebase 中设置普通数据略有不同。它实际上并不提供时间戳。相反,它提供了一个值,告诉 Firebase 服务器用时间填充该节点。通过使用它,您应用的时间戳将全部来自一个来源,即 Firebase,而不是用户设备碰巧说的任何内容。

当您(从观察者那里)取回值时,您将获得自纪元以来的毫秒数。您需要将其转换为秒数才能创建 NSDate。这是一段代码:

let ref = Firebase(url: "<FIREBASE HERE>")

// Tell the server to set the current timestamp at this location.
ref.setValue(ServerValue.timestamp())

// Read the value at the given location. It will now have the time.
ref.observeEventType(.Value, withBlock: {
snap in
if let t = snap.value as? NSTimeInterval {
// Cast the value to an NSTimeInterval
// and divide by 1000 to get seconds.
println(NSDate(timeIntervalSince1970: t/1000))
}
})

您可能会发现引发了两个时间戳非常接近的事件。这是因为 SDK 会在收到 Firebase 的回复之前对时间戳进行最佳“猜测”。一旦它听到来自 Firebase 的实际值,它就会再次引发 Value 事件。

关于ios - 尝试在 Swift 中将 Firebase 时间戳转换为 NSDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29243060/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com