android - 在 Firebase Firestore 中获取当前服务器日期和时间
问题描述
我想在 Firebase Firestore 中获取我的服务器时间,以便我可以将它用于我的倒计时逻辑。我在任何地方都找不到,主要是他们建议使用FiedValue.serverTimeStamp
,或者ServerValue.TIMESTAMP
两者都用于保存数据。我不想保存数据,我只想获取服务器时间。
有没有像静态的方式FirebaseFirestore.getInstance().getServerTime()
?
解决方案
正如@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提交时间支持请求
推荐阅读
- c# - 无效的回发或回调参数。启用事件验证... - 仅在 IIS 10 Selenium 测试下
- angular - 没有名称空间“数学”Angular 6的模块
- r - 是否可以选择 left_join 列表列?
- lua - 在记事本++中运行打开解释器但不执行
- azure - Azure Redis 缓存专用终结点测试?
- php - PHPUnit 存根一个类
- mysql - Sum() the output of a function in SQL
- c++ - Qt:如何跨 dll 和可执行文件管理 QObject 类?
- python - 在 AWS Glue 中使用 Pandas 分析
- c++ - 快速排序无法按预期使用链表