Android 如何在Firestore上检索日期而不使用时区进行更新?

Android 如何在Firestore上检索日期而不使用时区进行更新?,android,firebase,google-cloud-firestore,Android,Firebase,Google Cloud Firestore,我在Firestore上有以下列表: “时间表”向用户显示他们可以预约的日期。但是当用户有不同的时区时,它会自动更新小时数。例如,居住在德国的人将提前4或5小时收到列表(06:00到10:00,09:00到13:00,11:00到15:00,…)。所以我的问题是,如何才能不干扰日期,不改变时间,只接收存储的“原始”日期 但是当用户有不同的时区时,它会自动更新小时数。例如,居住在德国的人会提前4或5小时收到列表 Firestore时间戳仅以纳秒的精度存储Unix历元的偏移量。它没有任何时区编码,

我在Firestore上有以下列表:

“时间表”向用户显示他们可以预约的日期。但是当用户有不同的时区时,它会自动更新小时数。例如,居住在德国的人将提前4或5小时收到列表(06:00到10:00,09:00到13:00,11:00到15:00,…)。所以我的问题是,如何才能不干扰日期,不改变时间,只接收存储的“原始”日期

但是当用户有不同的时区时,它会自动更新小时数。例如,居住在德国的人会提前4或5小时收到列表

Firestore时间戳仅以纳秒的精度存储Unix历元的偏移量。它没有任何时区编码,这就是为什么你有这种行为。不仅在Firestore中,而且在许多其他数据库中,时间戳对象并不关心时区,而是关心“时间点”

要检查这一点,请打开Firebase控制台并检查时间戳属性的值。您将看到,时间是使用设备所在的本地时区显示的。还请注意,客户端位于哪个时区并不重要。“时间点”是相同的,无论用户在世界各地

如果您在Android应用程序中将时间戳转换为
Date
对象,则该日期对象将在用户设备的本地时区中进行转换,类似于控制台中发生的情况


如果要获取与特定时区对应的
Date
对象,应该使用一些专门的类,例如。这里是所有可用数据的列表。

因此,老实说,我无法检索原始存储的小时和分钟的日期(使用相同的数字)。在db的每次调用中,系统将自动将时间更新到其本地时区,验证每个本地时区以进行正确调整并不是一项简单的任务。我得做点什么。感谢AlexSo,老实说,我无法按最初存储的时间和分钟检索日期:是的,您可以将日期存储为任何其他格式,例如字符串,但这不是推荐的方法。您确定要在德国为用户显示06:00吗?想象一下与巴西、德国和东京的人们召开电话会议。如果他们都看到时间是“06:00”,那么他们都会在不同的时间出现,并且不会打电话。你经常在世界杯或奥运会的网站上看到的是一个可以在当地时间和用户自己的时区之间切换的时间。@Zonker.in.Geneva现在我使用的是常规方式,即让系统更正时间,但想法是,如果有人愿意安排特定的时间,用户将被告知日程安排与时区有关,这是为了明确,即使德国电话是06,约会也是06,您也必须查看约会地点的时间。当然,这是一种表象,所以你最终会知道的