【问题标题】:Date format for Firebase FirestoreFirebase Firestore 的日期格式
【发布时间】:2021-06-09 12:07:37
【问题描述】:

这是我的问题:我想将时间戳发送到 Firestore 文档。我之前使用了一个名为“react-native-datetime-picker”的包,它返回了一个 UNIX Epoch 时间戳,我将使用它直接发送到 firestore:

 startsAt: new firebase.firestore.Timestamp(startsAt, 83000000),
 endsAt: new firebase.firestore.Timestamp(endsAt, 83000000),

(startsAt 和 endsAt 是时间戳)。这有效并且会向firestore发送时间戳,但是,由于在Android上你只能选择日期或时间来选择而不是同时选择,我现在使用一个名为“react-native-modal-datetime-选择器”,这让我可以选择两者。现在这个包以这种格式返回一个完整的日期:

2021-03-20T18:25:00.000Z

当我尝试将其发送到 Firestore 时,它​​不起作用,同时说:FirebaseError: Timestamp seconds out of range. 所以我猜我正在尝试向 Firestore 发送非常规格式的日期。有没有办法将此日期更改为时间戳?或者这种情况有另一种解决方法吗?提前致谢!

【问题讨论】:

    标签: javascript firebase react-native google-cloud-firestore


    【解决方案1】:

    我设法使用 getTime() 函数将日期发送到 Firestore:

    startsAt: new firebase.firestore.Timestamp(Math.round(startsAt.getTime() / 1000), 83000000),
    

    getTime() 将您的日期转换为以毫秒为单位的纪元时间戳,您将其除以 1000 以秒为单位,并确保 Firestore 将其存储为时间戳。您必须对其进行四舍五入,因为 Timestamp() 不能将小数作为参数。

    【讨论】:

      【解决方案2】:

      const timestamp = firebase.firestore.FieldValue.serverTimestamp();

      你试过这个方法了吗,这是内置的 firestore 方法,在所有时间戳上都能正常工作

      参考:https://firebase.google.com/docs/reference/js/firebase.firestore.FieldValue

      【讨论】:

      • 据我了解,FieldValue.serverTimestamp 返回您创建文档的确切时间,但是我需要添加用户选择的日期。 serverTimestamp 能做到这一点吗?
      • 是的,应该的。
      猜你喜欢
      • 2020-03-21
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      • 2020-02-23
      • 1970-01-01
      • 2020-04-18
      • 1970-01-01
      相关资源
      最近更新 更多