2017-05-14 28 views
-2

私は、jsonリンク経由でサーバーからデータを取得するアイテムのリストを持っています。属性の1つは、アイテムが作成された日時です。json日付の経過時間を知る方法

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

私は、各項目の上ではなく=>

1分前のフォーマットのようなFacebookのステータスでのTextViewで、この時間を表示したいです| 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 
+0

日付を解析し、現在の日付と比較します。どの時点で問題がありますか? – Henry

+0

@Henry更新を確認する –

+0

最初の問題は、1つのタイムスタンプの時間部分と完全な2番目のタイムスタンプを比較することです。 – Henry

答えて

0

まず、あなたがdifference 2間の日数を計算する必要があり、つまり、あなたの指定した日付と現在の日付:

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 
     } 
    } 
} 
+0

私は理解できるフォーマットでそれを表示する必要があります..!? ** Update 2 ** –

+1

@SamZarをチェックしてください。この行には「difference/= 60000;」と表示されます。 – Henry

+0

@SamZar、Henryは正しいです。秒ではなく更新でミリ秒単位で作業しています。 –

関連する問題