将Cloud Firestore时间戳转换为可读日期

时间:2019-05-22 14:26:13

标签: java firebase date google-cloud-firestore

如何转换从firebase firestorm数据库中检索到的时间戳,并将其与当前日期和时间进行比较。

 db.collection("users").document(user.getuid).get()
                .addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
                    @Override
                    public void onSuccess(DocumentSnapshot documentSnapshot) {
                        String date = documentSnapshot.getData().get("last_login_date").toString();

                    }
                });

将日期转换为可读性,并从当前时间中扣除,以天,小时和分钟为单位显示差异

日期vairbale的输出格式如下 时间戳(秒= 1558532829,纳秒= 284000000)

3 个答案:

答案 0 :(得分:0)

要以正确的方式获取date属性的值,请使用以下代码行:

db.collection("users").document(user.getuid).get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.isSuccessful()) {
            DocumentSnapshot document = task.getResult();
            if (document.exists()) {
                Date userDate = document.getDate("date");

                //Do what you need to with the userDate object
            }
        }
    }
});

因此,有了userDate对象,您可以将其与所需的任何其他Date对象进行比较。

答案 1 :(得分:0)

当您从Cloud Firestore中的文档中读取时间戳类型字段时,它将作为Java中的Timestamp类型对象到达。请务必阅读链接的Javadoc以获得更多信息。

Timestamp timestamp = (Timestamp) documentSnapshot.getData().get("last_login_date");

时间戳记包含两个部分,秒和纳秒。如果这些值对您没有用,则可以使用其toDate()方法将Timestamp转换为Java Date对象,但是由于Date对象仅使用微秒精度,因此您可能会失去时间戳的纳秒精度。

Date date = timestamp.toDate();

使用Date对象,您应该能够轻松使用其他日期格式工具,例如Android's own date formatting options。您还可以使用日期的toMillis()方法将其与System.currentTimeMillis()中的当前时间进行比较;

请参阅:

答案 2 :(得分:0)

您也可以使用它。

    String date= DateFormat.getDateInstance().format(timestamp.getTime());

它主要在RecyclerView的Adapter类中使用。