【问题标题】:Firestore Timestamp.toDate() returns date in UTCFirestore Timestamp.toDate() 以 UTC 格式返回日期
【发布时间】:2020-03-03 12:45:54
【问题描述】:

我正在以 DateTime(2020, 02, 29, 9) 的身份从我的 Flutter 应用程序将时间戳上传到 Firestore 文档

时间戳在 Firestore 中存储为 February 29, 2020 at 9:00:00 AM UTC-6

使用 document['timestamp'].toDate().hour 从颤振应用程序中检索时间戳会按预期返回“9”。

在云函数中获取此数据时会出现此问题。 snap.timestamp.toDate() 将日期对象返回为Sat Feb 29 2020 03:00:00 GMT+0000 (UTC),不考虑时区偏移。

如何检索与存储在 Firestore 中的时间相同的时间,而不是获取 UTC 时间。

【问题讨论】:

    标签: firebase datetime google-cloud-firestore google-cloud-functions


    【解决方案1】:

    Timestamps 在 Firestore 中表示为与 UTC 纪元时间的偏移量。没有编码为时间戳的时区。当您在 Firestore 控制台中查看时间戳字段时,它将使用本地计算机配置的时区格式化日期。

    JavaScript Date 对象类似——它们也不存储时区。当打印日期的字符串表示时,它将添加一个时区,但这只是字符串格式的一部分。如果您想处理没有时区的日期和时间戳,请不要使用该字符串格式。

    如果您想处理没有时区的日期,您应该忽略这些日期的格式化字符串表示。只需以编程方式处理它们,或使用日期库,让您使用您喜欢的时区格式化日期。

    【讨论】:

    • 谢谢!我原以为这是原因。现在一切都说得通了。
    • 你们觉得这对于数据库来说很奇怪吗?我只是在征求意见。我花了几个小时来解决一个类似的问题。我不敢相信 Google 又让它变得复杂了。
    猜你喜欢
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    • 2021-10-16
    • 2020-10-08
    • 2023-04-06
    • 2021-06-26
    • 1970-01-01
    相关资源
    最近更新 更多