当前位置: 首页 > 面试题库 >

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

狄峻熙
2023-03-14
问题内容

我正在尝试在Swift应用中使用Firebase时间戳。我想将它们存储在Firebase中,并将其用作应用程序中的本机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))
    }
})

您可能会发现您收到两个带有非常接近的时间戳的事件。这是因为在从Firebase收到回音之前,SDK将在时间戳上进行最佳猜测。一旦从Firebase听到了实际值,它将再次引发Value事件。



 类似资料:
  • 为了使它更容易理解:从Twitter API你将得到这种格式的字符串Date(2020年3月26日星期四11:51:30 0000)我想做的就是用DateTime格式解析这个字符串,所以我需要将格式从这种(2020年3月26日星期四11:51:30 0000)改为类似这样的(2020年4月26日11:51:30),这可能吗?谢谢:)

  • 问题内容: 我有一个毫秒本地本地时间戳,我想将其转换为毫秒本地UTC时间戳。快速浏览一下文档,看起来像这样工作: 有一个更好的方法吗? 问题答案: 使用a 来获取本地纪元处的偏移量,然后将其添加到本地纪元时间戳中。

  • 我已经尝试从firebase时间戳中获取日期和时间,如下所示: 但我得到的结果是:

  • 问题内容: 我有一个日期保存在Firestore字段中作为时间戳,我想将其转换为Swift中的日期: 我尝试了以下操作,但出现错误: 错误: 我想转换为Date的原因是为了可以使用此Date扩展名模仿您在Instagram帖子上看到的时间戳: 问题答案: 可以这样做: 或者你可以这样做: 请参阅时间戳参考文档。

  • 问题内容: 我正在使用Python处理日期,因此需要将其转换为UTC时间戳以在中使用。以下代码不起作用: 首先将日期对象转换为datetime也无济于事。我尝试从以下链接获取示例,但: 现在要么: 要么 确实有效。 如此普遍的问题:如何根据UTC将日期转换为自纪元以来的秒数? 问题答案: 如果使用UTC: 如果d在当地时区: timestamp1而timestamp2如果午夜在本地时区是不一样的时

  • 问题内容: 我将时间作为Unix时间戳存储在MySQL数据库中,并将其发送到一些JavaScript代码。我怎么会得到时间呢? 例如,以HH / MM / SS格式。 问题答案: let unix_timestamp = 1549312452 有关Date对象的更多信息,请参考MDN或ECMAScript5规范。