Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与Joda一起有效地获取时间单位_Java_Datetime_Jodatime - Fatal编程技术网

Java 与Joda一起有效地获取时间单位

Java 与Joda一起有效地获取时间单位,java,datetime,jodatime,Java,Datetime,Jodatime,我正在寻找一个简洁的解决方案,以获取Java7中的时间单位(或使用Joda date-time) 比如,到65分钟,应该是1小时5分钟 到30分钟,应该是30分钟 谢谢。如果您的输入总是分钟,请使用模数运算符%60查找剩余分钟,使用/60查找小时。简短回答,请使用org.joda.time.Period 例如,一个通用解决方案可能有一个以毫秒为单位并返回以下形式字符串的方法: X小时,X分钟,X秒,X毫秒 public class DateTimeUtils { public static

我正在寻找一个简洁的解决方案,以获取Java7中的时间单位(或使用Joda date-time)

比如,到65分钟,应该是1小时5分钟

到30分钟,应该是30分钟


谢谢。

如果您的输入总是分钟,请使用模数运算符
%60
查找剩余分钟,使用
/60
查找小时。

简短回答,请使用
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);
然后像这样调用它:

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);

当然,这不是一个完整的解决方案,但应该可以让您开始。

您也可以使用
joda
time's打印输出

根据文件

使用标准规则规范此期间,假设为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

我相信你必须自己做这个转换。jodatime类通常有一个
getMinutes()
方法。在你的第一个例子中,你会得到65。你必须将它除以60,然后用余数向下移动一个时间单位。你的输入单位是多少?总是分钟,如您的示例中所示?是的,输入总是分钟。这个问题已经在Stackoverflow上回答了很多次,示例代码为Joda Time。