Firebase关于存在的文档说“客户端的时钟偏差”是一个值“Firebase 将添加到本地报告时间(以毫秒为单位的纪元时间)以估计服务器时间”。
然后,在示例中,它例如说:
@Override
public void onDataChange(DataSnapshot snapshot) {
double offset = snapshot.getValue(Double.class);
double estimatedServerTimeMs = System.currentTimeMillis() + offset;
}
在我用于测试的一台 Android 设备上,我更改了时钟,使其快了 4 分钟(大约)。现在,当我通过 Java SDK 获得时钟偏差时,我得到的值如下:
232599.0
因为它以毫秒为单位,所以它对应于3.87665
分钟。
但是要估计服务器的时间,我必须将它添加到本地时间戳 ( System.currentTimeMillis()
)。是对的吗?
如果客户的时钟已经快了 4 分钟,我加上这 3.9 分钟,我得到的估计不是快了大约 8 分钟吗?
顺便说一句,如果我可以在setPriority()
. 目前,ServerValue.Timestamp
仅可用于setValue()
因为它不是原始值。由于我想使用 中的时间setPriority()
,我必须通过使用System.currentTimeMillis()
和时钟偏差来计算服务器的时间。