是否有Java类或一些示例代码可以将java Date或Timestamp转换为:
"3 hours"
" 20 seconds"
"25 minutes"
我需要在我的网络应用程序中使用这些字符串来显示生成文件所花费的时间(当然是以漂亮的打印方式:) :)
谢谢,
答案 0 :(得分:8)
使用JodaTime:
PeriodFormat.getDefault( ).print( Hours.THREE );
PeriodFormat.getDefault( ).print( Seconds.seconds( 25 ) );
PeriodFormat.getDefault( ).print( Minutes.minutes( 20 ) );
P.S。此外,很容易获得2个时间点之间的小时/秒/分钟数。
答案 1 :(得分:3)
使用JodaTime是最好的整体方法,但是这里有一种方法可以不使用任何特定于域的库,在ChoiceFormat
的上下文中间接使用MessageFormat
:
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();
}
现在你可以拥有(as seen on 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
您当然可以将其扩展为包括天/月/年/等。
答案 2 :(得分:2)
你可以从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);
...
答案 3 :(得分:1)
这听起来非常像TimeAgo。您可以利用其中的代码来格式化这样的持续时间。
答案 4 :(得分:1)
尝试使用SimpleDateFormat: http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html