首页 > 解决方案 > Firestore FieldValue.serverTimestamp() 正在保存本地时间戳而不是服务器的时间戳

问题描述

这是代码:

func firebaseTimestampSet(){
    guard let currentUid = Auth.auth().currentUser?.uid else {return}
    let ref = Firestore.firestore().collection("dateTest").document(currentUid)
    ref.setData(["timestamp": FieldValue.serverTimestamp()])
}

结果如下:

这是印度当地时间

标签: iosswiftfirebasegoogle-cloud-firestore

解决方案


正如您将在文档中阅读的那样:

Timestamp 表示独立于任何时区或日历的时间点,以 UTC 纪元时间的纳秒分辨率表示为秒和秒的分数。

如果您在 Firebase 控制台中看到“本地时间显示在文档中”,那是因为 Firebase 控制台使用您计算机的时区配置来显示您本地时间的时间戳值。


综上所述:

  • 问题:“我如何存储一个全球时间?” 答案:“有了FieldValue.serverTimestamp(),已经是这样了,它存储在 UTC 中”。
  • 在您的应用程序中,您可以决定如何显示时间戳值(作为 UTC 或转换为用户的时区)。

推荐阅读