首页 > 解决方案 > 时间戳检索方法

问题描述

我现在正在编写一种方法来timestamp区分帖子上传到 Firebase 的时间和今天的日期/时间。根据我在这里观看的视频和其他帖子,这是getTimeDate我想出的方法。我把它传给我的ViewHolder,虽然我得到一个E/: getTimeDate: ParseException: Unparseable date: "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;

    }

标签: javaandroidfirebasetimestamp

解决方案


这是适用于这种情况的解决方案。

      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"

            }

推荐阅读