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

4
如何将从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)

请添加您文档的屏幕截图。 - Alex Mamo
@AlexMamo,请查看以下链接:https://drive.google.com/drive/folders/1FDJ9noHt11EZrMTsq0sCTXjIn5607vn1?usp=sharing - Omeed Totakhel
2个回答

5
当您从Cloud Firestore文档中读取时间戳类型字段时,它将作为Java中的Timestamp类型对象到达。请务必阅读链接的Javadoc以了解更多信息。
Timestamp timestamp = (Timestamp) documentSnapshot.getData().get("last_login_date");

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

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

0

你也可以使用这个。

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

它主要用于RecyclerView的Adapter类中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接