- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Firebase 的 docs about presence假设“客户端的时钟偏差”是“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()
和时钟偏差来计算服务器的时间。
最佳答案
您添加偏移量以确定相对于服务器的本地时间。
因此,如果您获得的服务器时间为 08:05,则您的客户端快了 10 分钟,则客户端计算机上的时钟在客户端上读数为 08:15(08:05 + 00:10 分钟)。
如果您想在不使用 ServerValue.Timestamp 的情况下恢复时间,那么您需要进行减去,这将需要客户端时间并使其与服务器匹配(例如 08:15 - 00:10 = 08:05)。
这就是我在引入 ServerValue.Timestamp 之前在项目中所做的,并且效果很好。
关于java - Firebase 时钟偏差的迹象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18392716/
正在使用 API ( https://quotesondesign.com/api-v4-0/ ),但收到的字符串格式正确时出现问题。 看起来像这样:Communication that doesn&
我是一名优秀的程序员,十分优秀!