有效地与Joda获得时间单位

时间:2014-02-03 20:04:22

标签: java datetime jodatime

我正在寻找一个简洁的解决方案来获取Java 7中的时间单位(或使用Joda日期时间)

喜欢,到65分钟,应该说1小时5分钟

到30分钟,应该说30分钟

感谢。

3 个答案:

答案 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查找小时数。