こんにちは!
メッセージが作成されてから何時間が経過したかを表示するようなタスクがあります。たとえば、私は 5 分前にメッセージを送信しましたが、時間があり、「5 分前」というメッセージを表示する必要があります。
System.currentTimeMillis() から現在の日付を取得し、メッセージが作成された日付のサブを実行しますが、「5 分前」のようなメッセージを取得するにはどうすればよいかわかりません。
私たちを手伝ってくれますか?
2 つの時間の差をミリ秒から分に変換し、結果の時間を文字列 " mins ago" と連結します。
long timeDifference = messageTime - currentTime;
String message = (timeDifference/60000) + " mins ago";
この静的メソッドを持つことができます。
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";
}
時間の変化を表す long はミリ秒単位であることがわかっています (元のメッセージ作成タイムスタンプと現在のタイムスタンプの両方が System.currentTimeMillis() を介して作成されたと仮定します)。
次に、簡単な計算を使用して、ミリ秒を分に変換できます。1,000 ミリ秒 = 1 秒なので、60,000 = 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);
}
}