javascript - Firebase 时间戳返回错误日期 - Javascript

标签 javascript reactjs firebase google-cloud-firestore timestamp

我正在尝试从 firestore 获取时间戳值(使用 Firebase 函数),并且我已使用 Timestamp 的 toDate() 方法和 moment 库在本地成功完成此操作。

moment(doc.data().EndDate.toDate())

但是当我将代码部署到 firebase 并测试该函数时,toDate() 不知何故返回的日期比 firebase 上保存的时间戳少 1 小时。我想它正在将我的日期转换为 UTC,因为我处于 UTC+1,并且时间戳也与 UTC+1 一起存储在 firestore 中,但我不知道如何可靠地获取时间戳日期,就像在 firestore 中一样,不考虑时区。

如果有人知道为什么会发生这种情况或知道如何解决它,那就太好了。

最佳答案

Firestore 中的所有时间戳均以 UTC 格式存储。如果您在 Firebase 控制台中看到不同的内容,那只是您的浏览器将其格式化为您的本地时区。

在 JavaScript 中,所有 Date 对象也以 UTC 表示。如果将其格式化为字符串,您可能会再次根据本地时区获得不同的表示形式。

如果您编写使用日期或时间戳计算值的代码,您应该使用 UTC 执行所有计算。这几乎是所有计算系统都想要处理的日期。当需要格式化日期以向最终用户显示时,只有这样您才应该考虑时区,并根据用户的偏好呈现一些内容。

关于javascript - Firebase 时间戳返回错误日期 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62876786/

相关文章:

Firebase 获取记录总数的更好方法

swift - 删除 Firebase 数据时遇到更新 TableView 行的麻烦

javascript - 使用 EaselJS 位图时捕获错误的 URL

Javascript ajax 延迟加载和函数组织

reactjs - Chakra UI 模态未按预期工作

javascript - 请求的资源上不存在 'Access-Control-Allow-Origin' header

javascript - 在 React Native 中映射嵌套对象数组

javascript - 平移多个 Y 轴之一以获取 Highcharts

javascript - 循环内出现意外的 `await`。 (无等待循环)

ios - 你如何在 firebase 数据库的文件夹中创建一个文件夹?