日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java计算时间跨度_请问如何使用Java计算时间跨度并格式化输出?

發(fā)布時間:2024/10/12 java 76 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java计算时间跨度_请问如何使用Java计算时间跨度并格式化输出? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

是的,Yup喚醒了我的死人,但這是基于@mtim發(fā)布的代碼的我改進的實現(xiàn),因為該線程幾乎位于搜索的頂部,所以我弄得昏昏欲睡,

public static String getFriendlyTime(Date dateTime) {

StringBuffer sb = new StringBuffer();

Date current = Calendar.getInstance().getTime();

long diffInSeconds = (current.getTime() - dateTime.getTime()) / 1000;

/*long diff[] = new long[]{0, 0, 0, 0};

/* sec *? diff[3] = (diffInSeconds >= 60 ? diffInSeconds % 60 : diffInSeconds);

/* min *? diff[2] = (diffInSeconds = (diffInSeconds / 60)) >= 60 ? diffInSeconds % 60 : diffInSeconds;

/* hours *? diff[1] = (diffInSeconds = (diffInSeconds / 60)) >= 24 ? diffInSeconds % 24 : diffInSeconds;

/* days * diff[0] = (diffInSeconds = (diffInSeconds / 24));

*/

long sec = (diffInSeconds >= 60 ? diffInSeconds % 60 : diffInSeconds);

long min = (diffInSeconds = (diffInSeconds / 60)) >= 60 ? diffInSeconds % 60 : diffInSeconds;

long hrs = (diffInSeconds = (diffInSeconds / 60)) >= 24 ? diffInSeconds % 24 : diffInSeconds;

long days = (diffInSeconds = (diffInSeconds / 24)) >= 30 ? diffInSeconds % 30 : diffInSeconds;

long months = (diffInSeconds = (diffInSeconds / 30)) >= 12 ? diffInSeconds % 12 : diffInSeconds;

long years = (diffInSeconds = (diffInSeconds / 12));

if (years > 0) {

if (years == 1) {

sb.append("a year");

} else {

sb.append(years + " years");

}

if (years <= 6 && months > 0) {

if (months == 1) {

sb.append(" and a month");

} else {

sb.append(" and " + months + " months");

}

}

} else if (months > 0) {

if (months == 1) {

sb.append("a month");

} else {

sb.append(months + " months");

}

if (months <= 6 && days > 0) {

if (days == 1) {

sb.append(" and a day");

} else {

sb.append(" and " + days + " days");

}

}

} else if (days > 0) {

if (days == 1) {

sb.append("a day");

} else {

sb.append(days + " days");

}

if (days <= 3 && hrs > 0) {

if (hrs == 1) {

sb.append(" and an hour");

} else {

sb.append(" and " + hrs + " hours");

}

}

} else if (hrs > 0) {

if (hrs == 1) {

sb.append("an hour");

} else {

sb.append(hrs + " hours");

}

if (min > 1) {

sb.append(" and " + min + " minutes");

}

} else if (min > 0) {

if (min == 1) {

sb.append("a minute");

} else {

sb.append(min + " minutes");

}

if (sec > 1) {

sb.append(" and " + sec + " seconds");

}

} else {

if (sec <= 1) {

sb.append("about a second");

} else {

sb.append("about " + sec + " seconds");

}

}

sb.append(" ago");

/*String result = new String(String.format(

"%d day%s, %d hour%s, %d minute%s, %d second%s ago",

diff[0],

diff[0] > 1 ? "s" : "",

diff[1],

diff[1] > 1 ? "s" : "",

diff[2],

diff[2] > 1 ? "s" : "",

diff[3],

diff[3] > 1 ? "s" : ""));*/

return sb.toString();

}

顯然可以改進。基本上,它試圖使時間跨度更友好,但是有一些限制,即,如果經(jīng)過的時間(參數(shù))是將來的話,它的行為會很奇怪,并且僅限于天,小時和秒(不包括月和年)處理,以便其他人可以;-)。

示例輸出為:

大約一秒鐘前

8分34秒前

一個小時四分鐘前

一天前

29天前

一年零三個月前

,歡呼聲:D

編輯:現(xiàn)在支持月份和年份:P

總結(jié)

以上是生活随笔為你收集整理的java计算时间跨度_请问如何使用Java计算时间跨度并格式化输出?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。