我正在尝试在Swift应用中使用Firebase时间戳.我想将它们存储在我的Firebase中,并在我的应用中将它们用作本机NSDate对象.
文档说他们是unix epoch时间,所以我尝试过:
NSDate(timeIntervalSince1970:FirebaseServerValue.timestamp)
Run Code Online (Sandbox Code Playgroud)
没有运气.
这个:
FirebaseServerValue.timestamp
Run Code Online (Sandbox Code Playgroud)
回报
0x00000001199298a0
Run Code Online (Sandbox Code Playgroud)
根据调试器.通过这些时间戳的最佳方法是什么?
我将文档存储在Cloud Firestore数据库的集合中。在本文档中,我想参考文档的存储时间,因此我在使用具有功能的Firestore的FieldValue对象serverTimeStamp()。
我无法将客户端上的FieldValue对象解析为a Date/NSDate或String。我花了一些时间阅读Firestore iOS文档,但找不到任何线索。
FieldValue从数据库到客户端没有问题,但是,我无法将类型的timeStamp转换/转换FieldValue为任何东西。
尝试转换为字符串和日期:
let timeStampString : String = message.timeStamp
let timeStampDate = Date(timeIntervalSince1970: message.timeStamp)
FieldValue给typeStringFieldValue为预期的参数类型TimeInterval(aka Double)编辑:查看道格·史蒂文森(Doug Stevenson)的答案后,处理此问题的最佳方法是在读取客户端信息时将timeStamp值转换为TimeStamp(而非FieldValue)。
let timeStamp = document["yourTimeStampKey"] as! TimeStamp
Run Code Online (Sandbox Code Playgroud)
而不是
let timeStamp = document["yourTimeStampKey"] as! FieldValue
Run Code Online (Sandbox Code Playgroud)