Firestore中存储ServerValue.timestamp()显示为“timestamp”是否正常?
关于Firestore中ServerValue.timestamp()显示为"timestamp"的疑问解答
这种情况完全正常,别担心,你的代码写法是对的!
这里的核心原因是:ServerValue.timestamp()并不是直接生成一个数值,它本质是Firestore提供的一个特殊占位符标记——其实它是结构类似["timestamp": true]的字典,作用是告诉Firestore服务器:"请在这个字段的位置,写入当前服务器的时间戳"。
你在Firestore后台看到的"timestamp",就是这个占位符的临时显示状态。当服务器完成数据写入操作后,这个占位符会被真正的时间戳值替换掉:
- 刷新一下Firestore控制台页面,就能看到它变成标准的Firestore Timestamp格式(会显示具体的日期时间,鼠标悬停还能看到对应的毫秒数);
- 用代码读取这个文档的
timeCreated字段,拿到的会是Firestore的Timestamp对象,调用milliseconds属性就能获取Unix纪元以来的毫秒数值。
举个简单的读取示例:
firestore.collection("orders").document(doc.documentID).getDocument { snapshot, error in if let timeCreated = snapshot?["timeCreated"] as? Timestamp { print("毫秒时间戳:\(timeCreated.milliseconds)") } }
所以你完全不需要修改现有代码,服务器会自动完成占位符到真实时间戳的替换,只是控制台的显示有个短暂的延迟或者临时状态而已。
内容的提问来源于stack exchange,提问作者rgoncalv
相关产品推荐
相关产品推荐

