如何知道 json 日期的经过时间

How to know the elapsed time for json date

我有一个项目列表,它通过 json link 从服务器获取数据,其中一个属性是 date/time,项目是在其中创建的,如下所示:

created_at: "2017-05-13T08:53:40Z"

我想在每个项目顶部的文本视图中显示这个时间,但在 Facebook 状态格式中显示 =>

1 分钟前 | 2 小时前 | 4 天前 | 5 个月前等..

我该怎么做。!?

更新

这是我最近的尝试。 '_'

  public String getOrderTime() {

    GregorianCalendar now = new GregorianCalendar();
    Date time = getTime(); // getTime is coming from json

    Log.i("Json Time ", time + "");

    long MILLIS_PER_DAY = 24 * 60 * 60 * 1000;
    long timePortion = time.getTime() % MILLIS_PER_DAY;

    Log.i("New Json Time ", timePortion + "");
    Log.i("Time Now ", now.getTimeInMillis() + "");

    String elapsed_time = DateUtils.getRelativeTimeSpanString(
            timePortion,
            now.getTimeInMillis(),
            DateUtils.SECOND_IN_MILLIS)
            .toString();

    Log.i("Elapsed Time", elapsed_time);

    return elapsed_time;
 }

这是日志,显然有问题

I/Json Time: Sun May 14 03:27:22 EDT 2017
I/New Json Time: 26842000
I/Time Now: 1494747376756
I/Elapsed Time: Jan 1, 1970

更新 2

新方法

  public String getOrderTime() {

    long end_time = theTime().getTime();  // json time
    long right_now = System.currentTimeMillis(); // right now

    Log.i("Time Now ", right_now + "");
    Log.i("Json Time ", end_time + "");

    long difference = right_now - end_time;
    Log.i("Elapsed Time", difference + "");

    if (difference < 60) {

        Log.i("Time in Minutes", difference + "m");
        return  difference + "m";

    } else {
        difference /= 60;
        if (difference < 24) {

            Log.i("Time in Hours", difference + "h");
            return difference + "h";

        } else {
            difference /= 30;

            Log.i("Time in Months", difference + "mo");
            return difference + "mo";
        }
    }

日志

     I/Time Now: 1494762022853
     I/Json Time: 1494758529000
     I/Elapsed Time: 3493853
     I/Time in Months: 1941mo

首先,您需要计算两个日期之间的difference,即您给定的日期和当前日期:

long difference = endDate.getTime() - startDate.getTime()

difference 将保持以毫秒为单位的差异

difference /= 60000; //minutes

if (difference < 60) {
    //minutes
} else {
    difference /= 60; //hours
    if (difference < 24) {
        //hours
    } else {
        difference /= 24; //days
        if (difference < 30) {
            //days
        } else {
            //months
        }
    }
}