3

したがって、Android SDKの[DateUtils.getRelativeTimeSpanString()] [1]は、過去の相対的な時間を表示するのに最適です。

つまり、5日前、または5分前です。

しかし、将来の日付ではあまりうまく機能しないようです。日付を印刷するだけのようです。

将来の日付の相対的な期間文字列を生成するための簡単な代替手段はありますか(2つのカレンダーオブジェクトを比較して日、時間、分、秒を計算するものを書くことはできません)?

長い列の何か:5日で、または5分で?

これが基本的に私が作成しなければならないものであり、それはちょっと汚いように見えます(注:このコードは投稿のためだけに書かれており、実際にはJavaコンパイラを介して実行されていません):

Calendar calendarIO = Calendar.getInstance();
calendarIO.set(2013, 2, 14, 7, 0);

long milliseconds1 = calendarIO.getTimeInMillis();
long milliseconds2 = System.currentTimeMillis();
long diff = milliseconds1 - milliseconds2;
long diffSeconds = diff / 1000;
long diffMinutes = diff / (60 * 1000);
long diffHours = diff / (60 * 60 * 1000);
long diffDays = diff / (24 * 60 * 60 * 1000);   

String relativeTime = "";
if (diffDays > 1) {
    relativeTime = diffDays + " days";
} else if (diffDays > 0) {
    relativeTime = diffDays + " days " + diffHours + " hours";
} else if (diffHours > 1) {
    relativeTime = diffHours + " hours";
} else if (diffMinutes > 0) {
    relativeTime = diffMinutes + " minutes.";
}
4

3 に答える 3

9

DateUtils.getRelativeTimeSpanString(time, now, minResolution)「n日」形式を使用して将来の日付で機能するので、使用してみます。

http://developer.android.com/reference/android/text/format/DateUtils.html#getRelativeTimeSpanString

于 2013-03-05T05:26:52.247 に答える
1

次の手順に従います

String dateString = "06/05/2019 06:49:00 AM";

SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa");

 Date convertedDate = new Date();
try {
      convertedDate = dateFormat.parse(dateString);
      long cuMillis = System.currentTimeMillis();

      String timeAgo = (String) DateUtils.getRelativeTimeSpanString(convertedDate.getTime(), cuMillis, 1, FORMAT_ABBREV_RELATIVE);

      Log.d("LOG", "Time Ago==>" + timeAgo);

   } catch (ParseException e) {

    e.printStackTrace();
  } 
于 2019-06-05T07:21:01.633 に答える
0
DateUtils.getRelativeTimeSpanString(endDate.getTime(), startDate.getTime(), DateUtils.FORMAT_ABBREV_RELATIVE);

次の注意事項があります。

1日ではなく明日を与えます。

于 2013-11-08T02:51:05.780 に答える