首页 > 解决方案 > 我可以更改保存在 Firestore 时间戳字段中的时区吗?

问题描述

所以从这里的文档中说

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

但这是我文档中的时间戳字段

在此处输入图像描述

如您所见,有 UTC+7。我来自印度尼西亚,我的 Firestore 数据库也在 asia-southeast2 地区(印度尼西亚雅加达)。

我的问题是......

我真的可以改变那个时区吗?即使文档说时间戳独立于任何时区。但我不明白为什么 Firestore 可以获取 UTC+7,这是正确的,因为我从印度尼西亚(UTC+7)发送数据

我尝试在我的 Android 应用程序中操作日期对象,并使用不同的时区 (UTC+9) 发送数据,但它始终会保存为 UTC+7。

所以基本上我试图找出我的代码中是否存在错误或firestore中的时区是否无法更改

标签: firebasegoogle-cloud-firestoretimezone

解决方案


在 Firestore 中,时区不会编码为时间戳值。所有时间戳均以 UTC 计量。这对于所有主要操作系统的日期和时间都是正常的。您在控制台中看到的是针对您的本地计算机当前配置的时区格式化的时间戳值。如果您想在那里查看不同的时区,则必须更改计算机的配置时区。更改时间戳值本身并没有真正的帮助。

您的代码应该只创建和操作同样以 UTC 度量的时间戳值。如果您以某种方式接收到另一个时区格式的数据,则应先将其转换为 UTC,然后再创建时间戳。


推荐阅读