-7

在那里!

我的任务是显示从创建消息以来已经过去了多少时间。例如,我 5 分钟前发送消息,我有很长的时间,我需要显示消息“5 分钟前”。

我从 System.currentTimeMillis() 获取当前日期并在创建消息时执行子日期,但是我不知道如何获得像“5 分钟前”这样的消息。

你可以帮帮我吗?

4

4 回答 4

2

将两次的差异从毫秒转换为分钟,然后将结果时间与字符串“mins ago”连接起来

long timeDifference = messageTime - currentTime;
String message = (timeDifference/60000) + " mins ago";

于 2012-07-17T04:08:12.780 回答
1

您知道表示时间变化的 long 以毫秒为单位(假设原始消息创建的时间戳和当前时间戳都是通过 System.currentTimeMillis() 创建的)。

然后,您可以使用简单的数学将毫秒转换为分钟。1,000 毫秒 = 1 秒,因此 60,000 = 1 分钟。

你到底在哪里遇到这个问题?

于 2012-07-17T04:03:25.257 回答
1

试试这个代码

import java.util.Calendar;

public class DateDifferent{  
  public static void main(String[] args){
  long diff = yourMilliseconds - nowMilliseconds;
  long diffSeconds = diff / 1000;
  long diffMinutes = diff / (60 * 1000);
  long diffHours = diff / (60 * 60 * 1000);
  long diffDays = diff / (24 * 60 * 60 * 1000);
  }
}
于 2012-07-17T04:15:12.467 回答
1

你可以有这个静态方法。

public static String getElapsedTime(Date oldDate) {
    long duration = System.currentTimeMillis() - oldDate.getTime();
    long seconds = TimeUnit.MILLISECONDS.toSeconds(duration);
    long days = TimeUnit.MILLISECONDS.toDays(duration);
    long hours = TimeUnit.MILLISECONDS.toHours(duration);
    long minutes = TimeUnit.MILLISECONDS.toMinutes(duration);

    if (days > 0) {
        return days + " days";
    }
    if (hours > 0) {
        return hours + " hrs";
    }
    if (minutes > 0) {
        return minutes + " minutes";
    }

    return seconds + " seconds";


}
于 2012-07-17T04:18:09.940 回答