繁体   English   中英

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

[英]Convert Cloud Firestore Timestamp to readable date

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

 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();
                       
                    }
                });

将日期转换为可读并从当前时间中减去以显示天数、小时数和分钟数的差异

日期变量的输出格式如下

Timestamp(seconds=1558532829, nanoseconds=284000000)

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

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

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

Date date = timestamp.toDate();

使用 Date 对象,您应该能够轻松使用其他日期格式化工具,例如Android 自己的日期格式化选项 您还可以使用 Date 的toMillis()方法将其与System.currentTimeMillis()的当前时间进行比较;

看:

要以正确的方式获取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对象进行比较。

你也可以使用这个。

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

它主要用于 RecyclerView 的 Adapter 类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM