首页 > 解决方案 > 如何在聊天应用程序中获取日期,

问题描述

如果我将从系统中获取日期,(local date in UTC)那么当用户更改日期时会出现问题,如果我将使用服务器日期时间,那么当我离线时我无法发送消息,这个应用程序是使用 firebase 在 android 中开发的real-time DB

标签: androidfirebasefirebase-realtime-database

解决方案


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)

推荐阅读