android - 如何在聊天应用程序中获取日期,
问题描述
如果我将从系统中获取日期,(local date in UTC)
那么当用户更改日期时会出现问题,如果我将使用服务器日期时间,那么当我离线时我无法发送消息,这个应用程序是使用 firebase 在 android 中开发的real-time DB
解决方案
ServerValue.TIMESTAMP
public static final Map<String, String> TIMESTAMP
另外:谷歌播放服务
服务器自动填充当前时间戳(自 Unix 纪元以来的时间,以毫秒为单位)的占位符值Firebase Database
。
Example
参考:https ://stackoverflow.com/a/37868163/9909365
ref.addValueEventListener(new ValueEventListener() {
public void onDataChange(DataSnapshot dataSnapshot) {
System.out.println(dataSnapshot.getValue());
}
public void onCancelled(DatabaseError databaseError) { }
});
ref.setValue(ServerValue.TIMESTAMP);
Extra
Handling Latency
服务器时间戳
Firebase 实时数据库服务器提供了一种将服务器上生成的时间戳作为数据插入的机制。此功能与 相结合onDisconnect
,提供了一种简单的方法来可靠地记录 Realtime 的时间Database client disconnected
:
//Java
DatabaseReference userLastOnlineRef = FirebaseDatabase.getInstance().getReference("users/joe/lastOnline");
userLastOnlineRef.onDisconnect().setValue(ServerValue.TIMESTAMP);
//Kotlin
val userLastOnlineRef = FirebaseDatabase.getInstance().getReference("users/joe/lastOnline")
userLastOnlineRef.onDisconnect().setValue(ServerValue.TIMESTAMP)