Java 时间戳检索方法

Java 时间戳检索方法,java,android,firebase,timestamp,Java,Android,Firebase,Timestamp,我现在正在写一个方法来获取帖子上传到Firebase的时间和今天的日期/时间之间的差异。根据我看过的视频和这里的其他帖子,这是我想出的方法getTimeDate。我将它传递给我的ViewHolder,尽管我得到了一个E/:getTimeDate:ParseException:unparseabledate:“1576534039437”。本以为不错,但今天又回来了 我的代码有什么问题 目标是让TextView说出6个小时前、32分钟前、4天前之类的话 PostAdapter.java if ("

我现在正在写一个方法来获取帖子上传到Firebase的时间和今天的日期/时间之间的差异。根据我看过的视频和这里的其他帖子,这是我想出的方法
getTimeDate
。我将它传递给我的
ViewHolder
,尽管我得到了一个
E/:getTimeDate:ParseException:unparseabledate:“1576534039437”
。本以为不错,但今天又回来了

我的代码有什么问题

目标是让
TextView
说出6个小时前、32分钟前、4天前之类的话

PostAdapter.java

if ("".equals(post.getTimestamp())) {
            holder.timestamp.setVisibility(View.GONE);
        } else {
            if (post.getPostid() != null) {
                holder.timestamp.setVisibility(View.VISIBLE);
                String timestampDifference = getTimeDate();
                if (!timestampDifference.equals("0")) {
                    holder.timestamp.setText(timestampDifference + " days ago");
                } else {
                    holder.timestamp.setText("Today");
                }

            }
        }


 int position;

    //TIMESTAMP
    private String getTimeDate() {

        final Post post = mPost.get(position);
        final String TAG = "";

        String difference = "";
        Calendar calendar = Calendar.getInstance();

        //Date format
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");

        //Today's date
        Date today = calendar.getTime();
        simpleDateFormat.format(today);

        Date timestamp;
        try {
            if (post.getTimestamp() != null) {
                timestamp = simpleDateFormat.parse(post.getTimestamp().toString());
                difference = String.valueOf(Math.round(((today.getTime() - timestamp.getTime()) / 1000 / 60 / 60 / 24)));
            }
        } catch (ParseException e) {
            Log.e(TAG, "getTimeDate: ParseException: " + e.getMessage());
            difference = "0";
        }

        return difference;

    }

以下是在这种情况下有效的解决方案

      private Date date1, date2;
        .
        .
        .

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
        .


        date1 = new Date(); // current datetime
        date2 = simpleDateFormat.parse(datetimeFromPost); // date in string format from post.
        .

        printDifference(date1,date2);


        public void printDifference(Date startDate, Date endDate) {
                //milliseconds
                long different = endDate.getTime() - startDate.getTime();

                long secondsInMilli = 1000;
                long minutesInMilli = secondsInMilli * 60;
                long hoursInMilli = minutesInMilli * 60;
                long daysInMilli = hoursInMilli * 24;

                long elapsedDays = different / daysInMilli;
                different = different % daysInMilli;

                long elapsedHours = different / hoursInMilli;
                different = different % hoursInMilli;

                long elapsedMinutes = different / minutesInMilli;
                different = different % minutesInMilli;

                long elapsedSeconds = different / secondsInMilli;
                String difference= "";
                String diffDays = "";
                String diffHours = "";
                String diffMins = "00:";
                String diffSeconds = "00";

                if (elapsedDays > 0) {
                    if (elapsedDays == 1) {
                        diffDays = elapsedDays + " day ";
                    } else {
                        diffDays = elapsedDays + " days ";
                    }
                }
                if (elapsedHours > 0) {
                    diffHours = String.format("%02d", elapsedHours) + ":";
                }
                if (elapsedMinutes > 0) {
                    diffMins = String.format("%02d", elapsedMinutes) + ":";
                }
                if (elapsedSeconds > 0) {
                    diffSeconds = String.format("%02d", elapsedSeconds) + "";
                }

                difference= diffDays + diffHours + diffMins + diffSeconds + "ago"; 
    // here is the difference between datetime in "00:00:00 ago"

            }

你想做的就是得到日期/时间的差异?您遇到了什么错误?@Jacks介于文章上载到Firebase的时间和当前日期/时间之间。必须是“6小时前”、“32分钟前”、“3天前”等@Jacks还有,我在这里得到了一个
null指针,但是idk why
Date postTimestamp=simpleDataFormat.parse(post.getTimestamp().toString())如果将printDifference()作为一个单独的方法,那么它更好,并且可以重用。只需传递日期值,以您想要的任何格式更新日期差。如图所示,我添加了日期、小时、分钟和秒。我将尝试一下。让你知道它是否有效。谢谢,bronull指针一定是因为数据问题,而不是这个方法提供了更易于理解的代码,您可以根据需要编辑为日期戳的任何格式。在您的情况下,如果您只需要“天”,您可以跳过其他可用选项,如分钟和小时。另外,在同一天,你只能显示小时,如果是第二天,你可以只显示'天'让我们。