【问题标题】:How to know the elapsed time for json date如何知道json日期的经过时间
【发布时间】:2017-05-14 07:28:14
【问题描述】:

我有一个项目列表,它通过 json 链接从服务器获取其数据,其中一个属性是创建项目的日期/时间,如下所示:

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

我想在每个项目顶部的 textview 中显示这次,但在 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

【问题讨论】:

  • 解析日期并将其与当前日期进行比较。你在什么时候遇到了困难?
  • @Henry 检查更新
  • 第一个问题是仅将一个时间戳的时间部分与完整的第二个时间戳进行比较。
  • 有没有机会你可以展示如何解决这个问题,我真的可以使用你的帮助!

标签: android json date time elapsedtime


【解决方案1】:

首先,您需要计算两个日期之间的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
        }
    }
}

【讨论】:

  • 我需要以有意义的格式显示它..!?请检查更新 2
  • @SamZar 你漏掉了这行difference /= 60000;
  • @SamZar,亨利是对的。您在更新中使用毫秒而不是秒。
  • 哦,我的错......是..?
  • @SamZar 是的,你是对的,请查看我的编辑。
猜你喜欢
  • 1970-01-01
  • 2021-12-07
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多