【问题标题】:Parse Firestore timestamp to Flutter DateTime considering UTC考虑 UTC 将 Firestore 时间戳解析为 Flutter DateTime
【发布时间】:2021-08-11 16:32:35
【问题描述】:

我的 Firestore 集合中有一个时间戳,例如 February 1, 2022 to 00:00:00 UTC+1。 在我的颤振应用程序中,当我使用DateTime.parse(firestore_timestamp.toDate().toString()) 解析日期时,它就像这样2022-01-31 23:00:00.000,这意味着它没有计算UTC+1,而是GMT 时间。即使DateTime.parse(firestore_timestamp.toDate().toLocal().toString()) 也不会转换为本地。我检查了一下,它是 firestore_timestamp.toDate() 解析 GMT 中的 timestamp。有没有其他解决方案来解决这个问题?

【问题讨论】:

    标签: flutter google-cloud-firestore


    【解决方案1】:

    Firestore 时间戳没有附加本地时区。它们都是UTC。您在控制台中看到的只是您计算机上配置的时区中日期的格式。它会随着您操作系统中时钟配置的变化而变化。

    一般来说,永远不需要解析时间戳的字符串版本。您应该始终假设时间戳是 UTC。如果您需要显示不同的内容,则应使用库根据最终用户的偏好对其进行格式化。

    另见:

    【讨论】:

    • 谢谢,虽然我在将 Timestamp 转换为 DateTime 时出现问题,直到我意识到模拟器设置的时区与我的计算机不同。现在一切都很好。
    【解决方案2】:

    我已解决,问题是,我使用的模拟器时区与我当前的时区不同,因此请务必在之前正确设置您的机器/模拟器时区。

    【讨论】:

      猜你喜欢
      • 2021-11-17
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      相关资源
      最近更新 更多