簡體   English   中英

Java漂亮的打印持續時間

[英]Java pretty print for duration

是否有Java類或一些示例代碼可以將java Date或Timestamp轉換為:

"3 hours"
" 20 seconds"
 "25 minutes"

我需要在我的Web應用程序中使用這些字符串來顯示生成文件所需的時間(當然是以漂亮的打印方式:))

謝謝,

隨着JodaTime

PeriodFormat.getDefault( ).print( Hours.THREE );
PeriodFormat.getDefault( ).print( Seconds.seconds( 25 ) );
PeriodFormat.getDefault( ).print( Minutes.minutes( 20 ) );

PS此外,很容易獲得2個時間點之間的小時/秒/分鍾數。

使用JodaTime是最好的整體方法,但是這里有一種方法可以在不使用任何特定於域的庫的情況下,在MessageFormat的上下文中間接使用ChoiceFormat

static String choiceFor(int index, String noun) {
    return "{index,choice,0#|1#1 noun |1<{index,number,integer} nouns }"
        .replace("index", String.valueOf(index))
        .replace("noun", noun);
}
static String prettyPrint(int h, int m, int s) {
    String fmt = 
        choiceFor(0, "hour") +
        choiceFor(1, "minute") +
        choiceFor(2, "second");
    return java.text.MessageFormat.format(fmt, h, m, s).trim();
}

現在你可以擁有( 如ideone.com上所示 ):

    System.out.println(prettyPrint(1,2,3));
    // 1 hour 2 minutes 3 seconds

    System.out.println(prettyPrint(0,0,7));
    // 7 seconds

    System.out.println(prettyPrint(1,0,1));
    // 1 hour 1 second

    System.out.println(prettyPrint(0,2,0));
    // 2 minutes

您當然可以將其擴展到包括天/月/年/等。

你可以從java Calendar課程中獲得小時,分鍾和秒鍾,然后用你喜歡的東西(小時,分鍾......)連接它們

Calendar c = Calendar.getInstance();
c.setTimeinMillis(<the time in milli second format (a long number)>);

int hours = c.get(Calendar.HOUR);
int mins = c.get(Calendar.MIN);
...

這聽起來很像TimeAgo 您可以利用其中的代碼來格式化這樣的持續時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM