[英]Difference between dates to get “time ago”
我有一個約會。 想將其與當前日期進行比較,並希望在時間前獲得結果。
Date d1 = new SimpleDateFormat("yyyy-M-dd").parse((String) request.
getParameter(date1));
Date d2 = new SimpleDateFormat("yyyy-M-dd").parse((String) request.
getParameter(date2));
long diff = d2.getTime() - d1.getTime();
並希望與以前的格式有所不同。
例如。 3小時2分鍾前
如果您只想使用核心Java而不用數字文字污染代碼:
long diffInMillis = d2.getTime() - d1.getTime();
long diffInHours = TimeUnit.MILLISECONDS.toHours(diffInMillis);
long diffInMins = TimeUnit.MILLISECONDS.toMinutes(diffInMillis);
System.out.printf("%d hours %d mins ago%n", diffInHours, (diffInMins - TimeUnit.HOURS.toMinutes(diffInHours)));
您的值是毫秒,所以
int min= (int) ((diff / (1000*60)) % 60);
int sec= (int) (diff / 1000) % 60 ;
嘗試,
long diff = d2.getTime() - d1.getTime();
long m= diff/(60*1000);
long hour=m/60;
long minutes=m%60;
System.out.printf("%d hours %d mins ago%n", hour, minutes)
以下是按照您的要求獲取的另一種方法,但是不建議使用getHours()
和getMinutes()
,只需執行System.out.println((d2.getHours()-d1.getHours())+" hours " +(d2.getMinutes()-d2.getMinutes()) +" mins ago"
);
friends。我認為我們可以做到這一點,我的代碼:
public static String getIntervalUpdateTime(long intervalTime) {
StringBuilder result = new StringBuilder();
long interval = intervalTime / 1000;
final long day = 24 * 60 * 60;
final long hour = 60 * 60;
final long minute = 60;
int detailDay = 0;
int detailHour = 0;
int detailMinute = 0;
int detailSecond = 0;
if (interval >= day) {
detailDay = (int) (interval / day);
interval = interval - detailDay * day;
}
if (interval >= hour) {
detailHour = (int) (interval / hour);
interval = interval - hour * detailHour;
}
if (interval >= minute) {
detailMinute = (int) (interval / minute);
interval = interval - detailMinute * minute;
}
if (interval > 0) {
detailSecond = (int) interval;
}
result.setLength(0);
if (detailDay > 0) {
result.append(detailDay);
result.append("day");
}
if (detailHour > 0) {
result.append(detailHour);
result.append("hour");
}
if (detailMinute > 0) {
result.append(detailMinute);
result.append("minutes");
}
if (detailSecond > 0) {
result.append(detailSecond);
result.append("seconds");
}
return result.toString();
}
這是我的答案。
使用為此目的而構建的Joda-Time 2.3中的Period類。
請參閱問題答案(尤其是這一部分 )中的示例代碼,該問題如何從現在開始使用Joda-Time計算經過的時間? 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.