【发布时间】:2021-09-01 13:22:24
【问题描述】:
我想知道,即使系统中的时间不正确或与实际时间不同,我如何才能在 android 中根据用户的位置获得正确的时间(以毫秒为单位)。
我正在使用 Firebase 构建一个聊天应用程序,我需要为发送的每条消息提供一个时间戳并将其存储在 Firebase 中,以便我调用按时间戳顺序向用户显示消息。
我尝试了以下方法,但它不起作用,因为它只返回系统的相同时间而不是准确时间 -
DatabaseReference offsetRef = FirebaseDatabase.getInstance().getReference(".info/serverTimeOffset");
offsetRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
Log.d(TAG, "onDataChange: Time snapshot: " + snapshot);
long offset = snapshot.getValue(Long.class);
long estimatedServerTimeMs = System.currentTimeMillis() + offset;
}
}
@Override
public void onCancelled(DatabaseError error) {
System.err.println("Listener was cancelled");
}
});
【问题讨论】:
-
问题不清楚,很难帮助。什么是“正确时间”?另外:这段代码有什么问题?所以:当你在每一行上设置一个断点,并在调试器中运行代码时:第一行没有做你期望它做的事情?那条线做了什么?而你的期望是什么?
-
抱歉信息不完整。
-
正确时间是指用户当前所在位置的实际时间。例如,如果用户的电话时间已设置为上午 10:00,但用户所在位置的实际时间为下午 1:00。基本上,我想在数据库中存储准确的时间戳,以便按顺序对聊天进行排序。当我将偏移量添加到 System.currentTimeMillis() 时,此代码只是返回系统的错误时间。我是 firebase 的初学者,在这里不太确定。
-
请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
标签: java android firebase firebase-realtime-database