我正在寻找一个简洁的解决方案来获取Java 7中的时间单位(或使用Joda日期时间)
喜欢,到65分钟,应该说1小时5分钟
到30分钟,应该说30分钟
感谢。
答案 0 :(得分:4)
您也可以使用joda
时间的normalizedStandard
来打印输出。
按照文档,
使用标准规则对此期间进行标准化,假设为12个月, 每周7天,每天24小时,每小时60分钟和60秒。
65分钟的例子是:
System.out.println(PeriodFormat.getDefault().print(Period.hours(0).plusMinutes(65).plusSeconds(0).normalizedStandard()));
输出:
1 hour and 5 minutes
答案 1 :(得分:1)
简短回答,请使用org.joda.time.Period
。
例如,通用解决方案可能是获取一个采用毫秒数并返回表单字符串的方法:
X小时,X分钟,X秒,X毫秒
public class DateTimeUtils {
public static String toNicePeriodValue(Period period) {
return period.getHours() + "hours " +
period.getMinutes() + "minutes " +
period.getSeconds() + "seconds " +
period.getMillis() + "milliseconds";
}
}
创建Period对象的简单方法如下:
public String nicePeriodValueFromMillis(long timeInMillis) {
Period period = new Period(timeInMillis);
String ret = DateTimeUtils.toNicePeriodValue(period);
return ret;
}
并像这样调用它:
long timeInMillis = /* obtain somehow */
String nicePeriodValue = nicePeriodValue(timeInMillis);
System.out.println("Nice Period Value: " + nicePeriodValue);
当然,这不是一个完整的解决方案,但它应该让你开始。
答案 2 :(得分:0)
如果输入始终为分钟,请使用模数运算符% 60
查找剩余分钟数,并使用/ 60
查找小时数。