首页 > 解决方案 > 在 Firebase Firestore 中获取当前服务器日期和时间

问题描述

我想在 Firebase Firestore 中获取我的服务器时间,以便我可以将它用于我的倒计时逻辑。我在任何地方都找不到,主要是他们建议使用FiedValue.serverTimeStamp,或者ServerValue.TIMESTAMP两者都用于保存数据。我不想保存数据,我只想获取服务器时间。

有没有像静态的方式FirebaseFirestore.getInstance().getServerTime()

标签: androidfirebasekotlingoogle-cloud-firestore

解决方案


正如@Doug 所说,没有办法只从 Firebase 获得时间。然而,同样有许多循环方式。

首先,您可以使用应用程序用户的设备使用倒计时,因为当今时代一直与卫星同步。这可以使用以下方法完成:

Date dateStart = new Date();
Date dateEnd = new Date();
System.out.println(dateEnd.getTime() - dateStart.getTime()/1000);

其次,在firebase中为开始时间(针对特定用户)创建一个对象,然后当倒计时结束时,计算当前时间与上传到数据库中的时间之间的差异。

FirebaseFirestore db = FirebaseFirestore.getInstance();

// At the time of setting.

Map<String, Object> map= new HashMap<>();
map.put("startTime", (new Date()).getTime());

db.collection(userdata).document(userid).set(map);

// At the time of retrieving:

db.collection(userdata).document(userid).get()
.addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.isSuccessful()) {
            DocumentSnapshot document = task.getResult();
            if (document.exists()) {
                // Here you can get the time..
            }
        } else {
            Log.d(TAG, "get failed with ", task.getException());
        }
    }
});

现在,如果您不喜欢上述任何方法,则可以在https://firebase.google.com/support提交时间支持请求


推荐阅读