当前位置: 首页 > 面试题库 >

如何从Android设备中的Firestore获取服务器时间戳?

司徒浩思
2023-03-14
问题内容

我了解FieldValue.serverTimestamp()可以用来在执行数据库操作时在Firestore服务器中生成时间戳记。我想了解如何从Firestore数据库中的特定设备中以Date/Timestamp没有任何数据库相关操作的格式获取时间戳。


问题答案:

因此,假设您拥有一个如下所示的数据库架构

Firestore-root
   |
   --- users (collection)
        |
        --- uidOne (document)
              |
              --- name: "UserOne"
              |
              --- creationDate: January 25, 2020 at 3:37:59 PM UTC+3 //Timestamp

要获取creationDate属性值作为Date对象,请使用以下代码行:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference usersRef = rootRef.collection("users");
usersRef.document(uid).get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        DocumentSnapshot document = task.getResult();
        if (document.exists()) {
            Date creationDate = document.getDate("creationDate");
            //Do what you need to do with your Date object
        }
    }
});

请记住,为了获得该Date对象,应该按照以下帖子中我的回答中的说明设置日期:

  • 在Firebase Firestore上ServerTimestamp始终为null

编辑:

这个问题强调了在不执行任何数据库相关操作的情况下获取服务器时间戳。

您无法执行此操作,因为该时间戳记值完全由Firebase服务器生成。换句话说,发生写操作时,将生成该时间戳。您无法在客户端上对此进行模拟,这是有道理的,因为您无法自己随机生成服务器时间戳。只有Firebase服务器可以做到这一点。如果你需要一个特定的时间戳,你应该
不会
产生这种方式。由于该属性的类型为Date,因此您可以将其设置为任意日期。因此,不要让Firestore决定要生成哪个时间戳,而要Date自己设置。



 类似资料:
  • TDR:我需要在自己的后端拥有Google Cloud Functions。 我编写应用程序,它使用firebase(尤其是firestore)作为在nodejs上编写的我自己的后端和客户端应用程序之间的传输层。 有时,我需要从后端的客户端捕获一些事件,但我希望避免直接向后端执行http查询(因为我需要捕获脱机状态和其他问题)。最好在firestore文档中进行一些更改,在后端捕获这些更改并执行一

  • 如何使用ruby获得服务器响应时间? get_response(URI. parse(url))到URL的响应代码和响应时间。实际上我的代码是: 它工作得很好,但我的响应时间太高,例如:Twitter。com(630.52ms)。如果我尝试ping推特。com,我收到70/120毫秒的回复。 这是计算此服务器响应时间的最佳方法吗?

  • ap.getServerTime(CALLBACK) 获取当前服务器时间的毫秒数 CALLBACK 参数说明 名称 类型 描述 time Number 服务器时间的毫秒数 代码示例 <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script> <b

  • Since 9.9 getServerTime(获取服务器时间) 通过APTimeUtilGetServerTimeWithStrictMode方法来获取当前服务器时间的毫秒数,如果离线情况那么为-1 使用方法 AlipayJSBridge.call('getServerTime', function(data) { console.log(data.time) }); 代码演示 <a hr

  • 在获得血压服务的所有特征(uuid:00002a35-0000-1000-8000-00805f9b34fb)后,我无法获得这些值(血压测量机的收缩、舒张和脉搏),而且我也不了解所有这些特征和描述符的意义。所以请大家帮我解决这个问题。

  • 问题内容: 我创建了一个android应用,在此应用中,用户可以保存一些任务。这些任务将保存在设备中,并且当用户上线时,任务将同步到服务器。用户保存任务时,我需要知道正确的日期和时间。诸如或返回设备时间之类的代码,如果设备时间不正确,则任务会以错误的日期保存。这个应用程式必须离线运作,这一点很重要。并且由于该应用程序的冗长性,用户可能有意更改设备时间。对不起,我的英语不好。 问题答案: 因此,我最