将 Firestore 时间戳转换为日期数据类型
Posted
技术标签:
【中文标题】将 Firestore 时间戳转换为日期数据类型【英文标题】:Converting Firestore Timestamp to Date data type 【发布时间】:2018-06-24 08:04:31 【问题描述】:几天前,我刚刚将我的 firebase pod 更新到了最新版本,在我的调试区域中,我收到消息说我必须从时间戳数据类型更新为 Date(类似的东西,我实际上忘记了)。
我还必须更改数据库设置,如下所示
let db = Firestore.firestore()
let settings = db.settings
settings.areTimestampsInSnapshotsEnabled = true
db.settings = settings
添加上面的代码后,我在Xcode中调试区的错误信息消失了。
据我记得,我还必须将客户端中的数据类型从 Timestamp 更改为 Date 数据类型,我没有更改此设置,因为我在 Xcode 中的调试区域中的错误消息已经消失。
因此,我的应用中的日期不正确。
能否再次分享从 TimeStamp 到 Date 的转换步骤?因为据我记得,我必须采取一些步骤才能遵循。我在 firebase 文档中找不到它。
非常感谢:)
【问题讨论】:
【参考方案1】:这是来自调试器的消息
存储在 Firestore 中的系统 Date 对象的行为将发生变化,您的应用程序可能会中断。 要隐藏此警告并确保您的应用不会中断,您需要在调用任何其他 Cloud Firestore 方法之前将以下代码添加到您的应用中:
let db = Firestore.firestore()
let settings = db.settings
settings.areTimestampsInSnapshotsEnabled = true
db.settings = settings
进行此更改后,存储在 Cloud Firestore 中的时间戳将作为 Firebase 时间戳对象而不是系统 Date 对象读回。因此,您还需要将期望日期的代码更新为期望时间戳。例如:
// old:
let date: Date = documentSnapshot.get("created_at") as! Date
// new:
let timestamp: Timestamp = documentSnapshot.get("created_at") as! Timestamp
let date: Date = timestamp.dateValue()
启用新行为时,请审核 Date 的所有现有用法。在未来的版本中,该行为将更改为新行为,因此如果您不遵循这些步骤,您的应用可能会中断。
【讨论】:
以上是关于将 Firestore 时间戳转换为日期数据类型的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Kotlin 中将 Firestore 日期/时间戳转换为日期?
将 Firebase Firestore 时间戳转换为日期(Swift)?